Из десятичной в двоичную: как машина записывает число
Что делает эта конвертация
Конвертация переписывает число из основания 10 в основание 2, используя только нули и единицы. Каждое целое число имеет ровно одну двоичную запись, и ни один разряд не теряется ни в одну, ни в другую сторону, поэтому это переобозначение, а не приближение. Именно поэтому инструмент даёт точный ответ для числа из тридцати знаков, чего не может калькулятор с плавающей точкой.
Почему остатки читают снизу вверх
Деление даёт младший бит первым, поэтому остатки нужно читать от последнего к первому. Прочитать их в порядке записи — самая частая ошибка при ручном переводе: так 156 превращается в 00111001 вместо правильного 10011100. Каждый остаток — это настоящий разряд результата, а количество шагов деления равно длине ответа в битах.
Таблица перевода из десятичной системы в двоичную
Небольшие десятичные числа, которые чаще всего встречаются в программировании, и их двоичные записи. Степени двойки стоит запомнить — остальное выводится из них.
| Десятичная | Двоичная |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 111 |
| 8 | 1000 |
| 10 | 1010 |
| 15 | 1111 |
| 16 | 10000 |
| 31 | 11111 |
| 64 | 1000000 |
| 100 | 1100100 |
| 127 | 1111111 |
| 200 | 11001000 |
| 255 | 11111111 |
| 1000 | 1111101000 |
Где двоичная встречается незаметно
Права на файл, маска подсети, регистр флагов, канал изображения — всё это двоичные числа в более дружелюбной записи. Прочитав 156 как 10011100, вы сразу видите, что старший бит и четыре средних установлены, а это и есть вопрос, который возникает, когда регистр состояния ведёт себя странно. Шестнадцатеричная нужна, чтобы то же самое читалось короче, но под ней всё равно лежат биты.
Считаем в уме без ошибок
Для быстрого ответа вычитайте наибольшую подходящую степень 2: 156 − 128 = 28, 28 − 16 = 12, 12 − 8 = 4, 4 − 4 = 0, получается 128 + 16 + 8 + 4 = 10011100. Приём работает потому, что двоичная — единственная система, где разряд либо присутствует целиком, либо отсутствует.
Частые вопросы
Как перевести десятичное число в двоичное вручную?
Делите на 2 и записывайте остаток, затем делите частное на 2 и повторяйте, пока частное не станет нулём. Остатки, прочитанные от последнего к первому, и есть двоичное число. Для 156 остатки получаются 0, 0, 1, 1, 1, 0, 0, 1, а в обратном порядке — 10011100.
Сколько двоичных разрядов нужно десятичному числу?
Столько, сколько раз его можно разделить пополам, то есть двоичный логарифм, округлённый вверх. Числу до 255 хватает 8 бит, до 65535 — 16, а до примерно 4,3 миллиарда — 32. Инструмент показывает точную длину и не дополняет её нулями до фиксированной ширины.
Инструмент справится с числом больше, чем калькулятор?
Да. Обычный калькулятор переходит на плавающую точку и начинает округлять после 2 в 53-й степени, а здесь вычисления идут в точной целочисленной арифметике, поэтому 64-битное значение возвращается с каждым верным разрядом, а не с похожим на правду приближением.
Как показываются отрицательные числа?
Со знаком минус перед двоичными цифрами — это знаково-величинная форма, а не дополнительный код. Дополнительный код имеет смысл только после фиксации разрядности, поэтому здесь он не применяется. Если в своём коде вам нужен дополнительный код для 32 бит, задайте это явно.
А дробные числа принимаются?
Да, и с ними инструмент обходится честно. Целая часть переводится точно, дробная раскладывается разряд за разрядом и останавливается, как только остаток обнуляется. Дробь вроде 0.1 в двоичной записи не заканчивается никогда, поэтому результат усекается, и страница говорит об этом прямо.