This chapter hasn’t been translated into English yet, so here is the Russian original. Your browser can translate the page; the formulas and widgets work the same. Back to the English contents →
Перевод чисел из одной системы счисления в другую
Двоичная, восьмеричная, шестнадцатеричная и любая другая система до 36-й, дробные числа и римские цифры — с решением по шагам и проверкой.
Загружаем решатель…
Как записать задачу
Число, его основание и куда переводить: 1011_2 в 10, FF_16 в 2, 255 в 16. Основание пишут после числа — через подчёркивание (1010_2), в скобках (1010(2)) или нижним индексом (1010₂); понимаются и программистские приставки 0x, 0b, 0o. Число без основания считается десятичным. Систему можно назвать словом: «в двоичную», «в шестнадцатеричную», «в 16-ричную». Если не сказать, куда переводить, десятичное число будет переведено в двоичную, восьмеричную и шестнадцатеричную системы сразу, а недесятичное — в десятичную.
Дробные числа тоже можно (0,1 в 2, 1A,8_16), в том числе периодические (0,(3) в 3). Цифры больше девяти записывают латинскими буквами: A = 10, B = 11, …, Z = 35, так что основание может быть от 2 до 36. Отдельно решатель переводит в римские цифры и обратно: 2024 в римскую, MCMLXXXIV.
Что значит запись числа
В записи $2024$ двойка слева означает две тысячи, а двойка в разряде десятков — двадцать: вклад цифры зависит от места. Такую запись называют позиционной, и основание — это число, во сколько раз соседние разряды отличаются друг от друга. В десятичной системе разряды — это единицы, десятки, сотни; в двоичной — единицы, двойки, четвёрки, восьмёрки.
Эта формула — и есть способ перевести число в десятичную систему: выписать вклады всех цифр и сложить. Для длинных чисел удобнее схема Горнера: идём по цифрам слева направо, умножаем накопленное на основание и прибавляем следующую цифру. Для $1011011_2$: $1 \to 2 \to 5 \to 11 \to 22 \to 45 \to 91$. Большие степени считать не приходится.
Из десятичной — делением
Переводить из десятичной системы удобно наоборот, делением. Разделим $n$ на основание $b$ с остатком: $n = b \cdot q + r$. По формуле выше все разряды, кроме последнего, делятся на $b$, поэтому остаток $r$ — и есть последняя цифра, а в частном $q$ записаны все остальные цифры. Делим частное снова, получаем предпоследнюю цифру, и так до нуля. Остатки, прочитанные снизу вверх, — запись числа.
С дробной частью всё зеркально. Умножим её на $b$: целая часть результата — первая цифра после запятой, а дробную часть снова умножаем на $b$. Если дробная часть стала нулём, перевод закончен. Если какая-то дробная часть повторилась, дальше цифры пойдут по кругу — получилась периодическая дробь.
Отсюда неожиданное следствие: $0{,}1$ в двоичной системе — бесконечная дробь $0{,}0(0011)_2$. Конечной дробь в системе с основанием $b$ бывает только тогда, когда знаменатель её несократимой записи раскладывается на простые множители основания, а у $\frac{1}{10}$ в знаменателе есть пятёрка. Поэтому компьютер хранит $0{,}1$ приближённо, и в большинстве языков программирования $0{,}1 + 0{,}2$ оказывается чуть больше $0{,}3$.
Между 2, 8 и 16 — группами цифр
Восемь — это $2^3$, шестнадцать — $2^4$. Поэтому одна восьмеричная цифра — ровно три двоичных разряда, а шестнадцатеричная — ровно четыре. Чтобы перевести двоичное число в восьмеричную систему, его разбивают на тройки цифр, начиная от запятой, и каждую тройку заменяют цифрой; в шестнадцатеричную — на четвёрки. Обратно — каждую цифру расписывают тремя или четырьмя битами. Никаких делений. Поэтому программисты и любят шестнадцатеричную запись: байт — это ровно две шестнадцатеричные цифры, от $00$ до $\mathrm{FF}$, а цвет #FF8800 читается как три байта: красный $255$, зелёный $136$, синий $0$.
Между другими системами, например из пятеричной в троичную, короче всего идти через десятичную: сначала сложить вклады разрядов, потом делить.
Разобранные примеры
Пример 1. 255 в двоичную систему
Делим на $2$ и записываем остатки:
$$\begin{array}{r|r|c} n & n : 2 & \text{остаток} \\ \hline 255 & 127 & 1 \\ 127 & 63 & 1 \\ 63 & 31 & 1 \\ 31 & 15 & 1 \\ 15 & 7 & 1 \\ 7 & 3 & 1 \\ 3 & 1 & 1 \\ 1 & 0 & 1 \end{array}$$
Остатки снизу вверх: $255 = 11111111_2$. Это самое большое число, которое помещается в восемь двоичных разрядов: $2^8 - 1$. В шестнадцатеричной системе то же число — $\mathrm{FF}$, в восьмеричной — $377$.
Пример 2. 123 в пятеричную систему
$123 = 5 \cdot 24 + 3$, $24 = 5 \cdot 4 + 4$, $4 = 5 \cdot 0 + 4$. Остатки снизу вверх: $123 = 443_5$.
Проверяем обратным переводом, это занимает полминуты и ловит почти все ошибки: $4 \cdot 25 + 4 \cdot 5 + 3 = 100 + 20 + 3 = 123$. Решатель делает такую проверку для каждого ответа. Ещё одна быстрая прикидка — число цифр: $5^2 = 25 \le 123 < 125 = 5^3$, значит, в пятеричной записи ровно три цифры.
Пример 3. $1011011_2$ в шестнадцатеричную
Разбиваем справа на четвёрки и дополняем левую группу нулём: $0101\ 1011$. Первая группа — $5$, вторая — $8 + 2 + 1 = 11 = \mathrm{B}$. Ответ: $1011011_2 = \mathrm{5B}_{16}$. Проверка: $5 \cdot 16 + 11 = 91$, и $1011011_2 = 91$.
Пример 4. $10{,}625$ в двоичную
Целая часть: $10 = 1010_2$. Дробную часть умножаем на $2$ и забираем целые части:
$$0{,}625 \cdot 2 = 1{,}25 \to 1,\qquad 0{,}25 \cdot 2 = 0{,}5 \to 0,\qquad 0{,}5 \cdot 2 = 1 \to 1.$$
Дробная часть кончилась, ответ конечный: $10{,}625 = 1010{,}101_2$. Так и должно быть: $0{,}625 = \frac58$, а в знаменателе только двойки.
Пример 5. 2024 римскими цифрами
Римская запись не позиционная, но пишется тоже по разрядам: $2000 = \mathrm{MM}$, $20 = \mathrm{XX}$, $4 = \mathrm{IV}$. Вместе — $\mathrm{MMXXIV}$. Знак подряд пишут не больше трёх раз, поэтому $4$, $9$, $40$, $90$, $400$ и $900$ записывают вычитанием: меньший знак ставят перед большим. Вычитать можно только I, X и C, и только из двух ближайших больших знаков: $99 = \mathrm{XCIX}$, а не $\mathrm{IC}$. Самое большое число, которое так записывается, — $3999 = \mathrm{MMMCMXCIX}$.
Типичные ошибки
- Читают остатки сверху вниз. Первый остаток — последняя цифра числа. Читать нужно снизу вверх.
- Забывают нулевые разряды. В $1011011_2$ две нулевые цифры; при переводе в десятичную их вклад ноль, но место в записи они занимают. Выбросив их, получите другое число.
- Пишут цифру, которой в системе нет. В восьмеричной системе нет цифр $8$ и $9$, в двоичной — ничего, кроме $0$ и $1$. Запись $129_8$ — ошибка.
- Путают буквы с цифрами. $\mathrm{A}_{16}$ — это $10$, а не $1$; $\mathrm{1A}_{16} = 26$.
- Группируют биты не от запятой. Тройки и четвёрки отсчитывают от запятой: в целой части — влево, в дробной — вправо, дополняя нулями неполные группы с краёв.
- В дробной части делят вместо того, чтобы умножать. Делением переводят целую часть, умножением — дробную.
Что ещё посмотреть
История записи чисел — от зарубок на кости до двоичной системы Лейбница (1703) и компьютеров — в главе «Счёт: от зарубок до битов». Почему периодическая дробь повторяется и как перевести её в обыкновенную — в калькуляторе дробей. Остатки от деления, на которых держится перевод, подробно разобраны в решателе сравнений по модулю, а разложить основание или знаменатель на простые множители поможет решатель разложения.
Где это объясняется
Другие решатели
- Квадратное уравнение
- Линейное уравнение
- Система линейных уравнений
- Уравнение высокой степени и разложение многочлена
- Неравенства методом интервалов
- Производная
- Интеграл
- Предел
- Исследование функции
- Действия с дробями
- НОД, НОК и алгоритм Евклида
- Разложение на простые множители
- Решение треугольника
- Матрицы: определитель, обратная, ранг, собственные числа
- Тригонометрическое уравнение
- Показательное и логарифмическое уравнение
- Проценты, сложный процент, кредит
- Перестановки, размещения, сочетания
- Комплексные числа
- Сравнения по модулю
- Прогрессии
- Вероятность: Байес и схема Бернулли
- Дифференциальное уравнение