Сначала напишите 47 дважды, (вам нравится Агент 47 , верно?), Оставляя пробелы, как показано (каждая черта - это слот для одной цифры. Сначала 2 слота, затем 4)
--47----47
Думаю, у вас есть 12
в руке (потому что 12 = дюжина). Умножьте его на 4
, первую цифру номера агента 47, то есть 47
, и поместите результат справа от первой пары, которая у вас уже есть
12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47
Затем умножьте 12
на 3
(чтобы сделать вторую цифру номера Агента 47, то есть 7
, вам нужно 7 - 4 = 3
) и поместить результат справа от первых 2 пар, последней пары слотов
12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs
Наконец, перетащите цифры одну за другой из вашей руки, начиная с самой правой цифры (в данном случае 2), и поместите их в первое пустое место, которое вы получите
2-47483647 <-- after placing 2
2147483647 <-- after placing 1
Вот оно! Для отрицательного предела вы можете думать об этом как о 1 больше в абсолютном значении , чем положительном пределе.
Попрактикуйтесь несколько раз, и вы освоите это!
Не знаю, помогает ли это достаточно, но вы можете индексировать биты целого числа в рубине.
n = 0b010101
n # => 21
n = 21
n[0] # => 1
n[1] # => 0
n[2] # => 1
n[3] # => 0
n[4] # => 1
n[5] # => 0
Взгляните на метод String.unpack . Это пример:
str = "1010"
str.unpack("cccc")
=> [49, 48, 49, 48]
Это даст вам целые значения. Есть другие способы выполнить преобразование.