Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 1.96 KB

File metadata and controls

29 lines (21 loc) · 1.96 KB

Ruby: Метод digits у числа

Когда у числа вызывается метод digits, то происходит следующее: берётся число и переводится в определённую с/с (система счисления).

Перевод из одной с/с в другую, как правило, всегда происходит путём деления исходного числа на с/с (например, число 25 в 10 с/с переводим в 8 с/с: получаем значение 31, потому что 25 / 8 = 3, 25 % 8 = 1, затем целую часть от деления "соединяем" к остатку от деления (получаем 31)).

По умолчанию у метода digits аргумент base, равный 10.

Десятеричная система счисления если в цифрах перевести, что такое десятеричная система счисления, то это — 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. В 10 с/с нет цифры 10. Например, другая с/с — 8 с/с, для неё ряд следующих цифр: 0, 1, 2, 3, 4, 5, 6, 7. Цифры 8 в 8 с/с не существует! Ну и так далее в других с/с.

Далее, после того как число было переведено в нужную base с/с, происходит преобразование получившихся значения(ий) в виде элементов массива в зависимости от с/с и получившийся массив инвертируется.

Примеры:

irb(main):048:0> 25.digits(8)
=> [1, 3]
irb(main):049:0> 1.digits(2)
=> [1]
irb(main):050:0> 2.digits(2)
=> [0, 1]
irb(main):051:0> 3.digits(2)
=> [1, 1]
irb(main):052:0> 4.digits(2)
=> [0, 0, 1]
irb(main):053:0>

В двоичной с/с 1 — это 1, 2 — 10, 3 — 11, 4 — 100.