Чтобы перевести число из десятичной системы в двоичную, нужны два алгоритма.
- Целая часть — делят на 2, пока частное не станет нулём, а остатки записывают снизу вверх.
- Дробная часть — умножают на 2, а целые части результатов записывают сверху вниз.
- ЕГЭ по информатике — системы счисления встречаются в нескольких заданиях.
- Типы заданий — есть задания именно на позиционные системы счисления, а в задачах на алгоритмы и программирование перевод бывает вспомогательным шагом.
- Результат — если ты уверенно владеешь обоими алгоритмами, эти шаги перестают отнимать время.
Как это спрашивают на экзамене
Формулировки в тренировочных вариантах различаются, но за большинством стоит один из двух алгоритмов. Например:
Переведите число 25₁₀ в двоичную систему.
Сколько единиц в двоичной записи числа 127₁₀?
Запишите число 0,375₁₀ в двоичной системе.
Бывают и задачи на сравнение чисел, записанных в разных системах счисления, и вопросы о количестве разрядов в двоичной записи. Здесь выбирай способ по условию.
- Сравнение: числа из разных систем удобнее сравнивать, переведя их в десятичную.
- Количество разрядов: иногда находят без полного перевода — достаточно определить, между какими степенями двойки лежит число.
Алгоритм для целых чисел: деление на 2
Начнём с целых чисел: этот алгоритм нужен чаще всего.
- Делим число на 2, записываем частное и остаток (0 или 1).
- Частное снова делим на 2 и записываем остаток.
- Повторяем, пока частное не станет 0.
- Остатки, записанные снизу вверх, от последнего к первому, образуют двоичное число.
Отдельно про ноль: 0₁₀ = 0₂.
Если переводишь программой с циклом «пока число больше 0», для нуля такой цикл не выполнится ни разу и не даст ни одной цифры, поэтому этот случай обрабатывают отдельно.
Главная ловушка — направление чтения. Если прочитать остатки в порядке получения, ответ окажется «перевёрнутым».
Пример: допустим, нужно перевести 13₁₀:
| Шаг | Деление | Частное | Остаток |
|---|---|---|---|
| 1 | 13 : 2 = 6 ост. 1 | 6 | 1 |
| 2 | 6 : 2 = 3 ост. 0 | 3 | 0 |
| 3 | 3 : 2 = 1 ост. 1 | 1 | 1 |
| 4 | 1 : 2 = 0 ост. 1 | 0 | 1 |
Читаем остатки снизу вверх: 1101₂.
Проверь результат обратным переводом: 1101₂ = 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13₁₀. Сошлось.
Алгоритм для дробных чисел: умножение на 2
С дробной частью всё устроено зеркально: вместо деления здесь умножение.
- Умножаем дробную часть на 2.
- Целую часть результата (0 или 1) записываем как очередную цифру двоичной дроби.
- Дробную часть результата снова умножаем на 2.
- Повторяем, пока дробная часть не станет 0 (дробь конечная), пока не начнётся повторение (дробь периодическая) или пока не получим нужное число разрядов.
Обрати внимание: здесь целые части читают сверху вниз, в порядке получения.
Направление противоположно алгоритму для целых чисел, и как раз на этом ошибаются.
Пример: переводим 0,625₁₀.
| Шаг | Умножение | Целая часть | Дробная часть |
|---|---|---|---|
| 1 | 0,625 × 2 = 1,25 | 1 | 0,25 |
| 2 | 0,25 × 2 = 0,5 | 0 | 0,5 |
| 3 | 0,5 × 2 = 1,0 | 1 | 0 |
Читаем целые части сверху вниз: 0,101₂.
Проверка: 0,101₂ = 1×2⁻¹ + 0×2⁻² + 1×2⁻³ = 0,5 + 0 + 0,125 = 0,625₁₀.
Смешанные числа: целая и дробная части отдельно
Если в числе есть и целая, и дробная часть, каждую переводят отдельно, а результаты объединяют через запятую. Смешивать два алгоритма в одном расчёте нельзя.
Пример: возьмём 13,625₁₀.
- Целая часть: 13₁₀ = 1101₂, делением на 2, остатки снизу вверх;
- Дробная часть: 0,625₁₀ = 0,101₂, умножением на 2, целые части сверху вниз;
- Вместе: 13,625₁₀ = 1101,101₂.
Проверка: 1101,101₂ = 8 + 4 + 0 + 1 + 0,5 + 0 + 0,125 = 13,625₁₀.
Особый случай: бесконечные двоичные дроби
Не каждую десятичную дробь можно точно записать в двоичной системе, и такие случаи полезно узнавать заранее.
Классический пример: 0,1₁₀ = 0,0001100110011…₂.
При умножении на 2 дробная часть не обращается в ноль, а цифры повторяются с периодом 0011.
Конечная двоичная дробь получается, только если после сокращения дроби в знаменателе остаётся степень двойки и нет других простых множителей.
Сокращать нужно обязательно: например, 3/6 выглядит так, будто в знаменателе есть множитель 3, но 3/6 = 1/2, и двоичная запись конечна.
Примеры:
- 0,5 = 1/2 = 2⁻¹;
- 0,25 = 1/4 = 2⁻²;
- 0,125 = 1/8 = 2⁻³;
- 0,625 = 5/8 = 5×2⁻³.
У 0,1 = 1/10 дробь уже несократима, а в знаменателе есть множитель 5, поэтому двоичная запись выходит бесконечной.
Бесконечную дробь записывают с заданным числом двоичных разрядов. Это делают двумя способами:
- отсечение: лишние разряды просто отбрасывают;
- округление: смотрят на следующий бит после последнего сохраняемого. Если он равен 1, последний разряд увеличивают на 1; если 0 — отбрасывают остаток, как при отсечении.
Пример: 0,1₁₀ с четырьмя разрядами после запятой.
- Отсечение даёт 0,0001₂.
- Пятый бит равен 1, поэтому при округлении получаем 0,0010₂.
Обратный перевод: проверка (из двоичной в десятичную)
Любой перевод стоит проверять обратным переводом. Это полминуты, а страхует он от потери балла.
Каждую цифру двоичного числа умножают на 2 в степени её позиции, результаты складывают.
- Целая часть: позиции считают справа налево, начиная с 0.
- Дробная часть: позиции считают слева направо, начиная с −1.
Пример:
101,1₂ = 1×2² + 0×2¹ + 1×2⁰ + 1×2⁻¹ = 4 + 0 + 1 + 0,5 = 5,5₁₀.
Если обратный перевод не дал исходное число, ошибка либо в остатках, либо в направлении чтения. Пройди шаги заново.
Разбор задания
Возьмём задание в экзаменационном формате.
Условие: «Переведите число 19₁₀ в двоичную систему счисления. Сколько единиц в полученной записи?»
Решение. Делим на 2 и фиксируем остатки:
| Шаг | Деление | Частное | Остаток |
|---|---|---|---|
| 1 | 19 : 2 = 9 ост. 1 | 9 | 1 |
| 2 | 9 : 2 = 4 ост. 1 | 4 | 1 |
| 3 | 4 : 2 = 2 ост. 0 | 2 | 0 |
| 4 | 2 : 2 = 1 ост. 0 | 1 | 0 |
| 5 | 1 : 2 = 0 ост. 1 | 0 | 1 |
Остатки снизу вверх: 19₁₀ = 10011₂.
Проверка: 10011₂ = 1×2⁴ + 0×2³ + 0×2² + 1×2¹ + 1×2⁰ = 16 + 0 + 0 + 2 + 1 = 19₁₀.
В записи 10011₂ три единицы. Ответ: 3.
Учти: ответ здесь — количество единиц, а не сама двоичная запись. Читай вопрос до конца.
Ошибки, за которые снимают баллы
Проверь себя по каждому пункту.
- Остатки целой части прочитаны сверху вниз. Например, вместо 1101₂ выходит зеркальная запись 1011₂.
- Цифры дробной части прочитаны снизу вверх. У двух алгоритмов направления противоположные, их легко перепутать.
- Деление остановлено раньше времени. Делить нужно до частного 0, иначе теряется старший разряд.
- В обратном переводе степени посчитаны не с той позиции. Для целой части отсчёт начинается с 2⁰ у правой цифры, для дробной — с 2⁻¹ у первой цифры после запятой.
- Арифметическая ошибка в промежуточном делении или умножении. Один неверный остаток ломает весь ответ, для этого и нужна проверка обратным переводом.
Шпаргалка
| Что переводим | Операция | Что записываем | Как читаем |
|---|---|---|---|
| Целая часть | Деление на 2 до частного 0 | Остатки (0 или 1) | Снизу вверх |
| Дробная часть | Умножение на 2 до дробной части 0, периода или нужного числа разрядов | Целые части результатов | Сверху вниз |
| Смешанное число | Каждая часть отдельно | Результаты через запятую | По правилам каждой части |
| Проверка | Цифра × 2 в степени позиции, суммирование | Сумму степеней двойки | Целая часть с 2⁰ справа, дробная с 2⁻¹ |
Проверь себя
Реши без подсказок, потом сверься с ответами.
Переведи 25₁₀ в двоичную систему.
11001₂
Переведи 0,375₁₀ в двоичную систему.
0,011₂
Переведи 10,25₁₀ в двоичную систему.
1010,01₂
Сколько единиц в двоичной записи числа 30₁₀?
четыре (30₁₀ = 11110₂)
Все четыре ответа совпали? Тогда тема освоена. Если нет, вернись к таблицам с алгоритмами и в первую очередь повтори направления чтения: остатки снизу вверх для целой части, целые части сверху вниз для дробной.



