Перейти к содержимому

Как перевести вещественное число в двоичную систему

  • автор:

2. Перевод дробных чисел из десятичной системы счисления в любую другую систему счисления

1. Целую часть числа переводим по алгоритму перевода целых чисел из десятичной системы счисления в любую другую систему счисления.

Делим число на основание системы счисления, в которую необходимо перевести, при этом записывая в обратном порядке остатки, из которых складывается искомое число.

2. Дробную часть числа умножаем последовательно на основание системы счисления, в которую необходимо перевести. Умножаем до тех пор, пока не получим единицу в целой части или пока не получим нужное число разрядов по условию задания. Из целых частей получившихся произведений записываем в прямом порядке искомое число.

1. перевести число \(58,14\) из десятичной системы счисления в двоичную систему счисления.

Следуя алгоритму, переводим сначала целую часть десятичного числа \(58\) в двоичную систему счисления. Делим его последовательно на основание искомой системы счисления — \(2\). Получаем число \(111010\). Следующим шагом переводим дробную часть \(0,14\) от десятичного числа, отбросив целую часть. Умножаем последовательно число на основание искомой системы счисления — \(2\). Умножаем до тех пор, пока не получим единицу в целой части. Записываем выделенные на схеме числа в прямом порядке и получаем в итоге двоичное число \(111010,001\).

1.png

2. перевести число \(58,14\) из десятичной системы счисления в шестнадцатеричную систему счисления.

Следуя алгоритму, переводим сначала целую часть десятичного числа \(58\) в шестнадцатеричную систему счисления. Делим его последовательно на основание искомой системы счисления — \(16\). Получаем число 3 A . Следующим шагом переводим дробную часть \(0,14\) от десятичного числа, отбросив целую часть. Умножаем последовательно дробную часть на основание искомой системы счисления — \(16\). Умножаем до тех пор, пока не получим ноль в целой части. Записываем выделенные на схеме числа в прямом порядке и получаем в итоге шестнадцатеричное число \(3A,23D7\).

Способы перевода чисел из одной системы счисления в другую

Странно, что в школах на уроках информатики обычно показывают ученикам самый сложный и неудобный способ перевода чисел из одной системы в другую. Это способ заключается в последовательном делении исходного числа на основание и сборе остатков от деления в обратном порядке.

Например, нужно перевести число 81010 в двоичную систему:

Результат записываем в обратном порядке снизу вверх. Получается 81010 = 11001010102

Если нужно переводить в двоичную систему довольно большие числа, то лестница делений приобретает размер многоэтажного дома. И как тут собрать все единички с нулями и ни одной не пропустить?

В программу ЕГЭ по информатике входят несколько задач, связанных с переводом чисел из одной системы в другую. Как правило, это преобразование между 8- и 16-ричными системами и двоичной. Это разделы А1, В11. Но есть и задачи с другими системами счисления, как например, в разделе B7.

Для начала напомним две таблицы, которые хорошо бы знать наизусть тем, кто выбирает информатику своей дальнейшей профессией.

Таблица степеней числа 2:

2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10
2 4 8 16 32 64 128 256 512 1024

Она легко получается умножением предыдущего числа на 2. Так, что если помните не все эти числа, остальные нетрудно получить в уме из тех, которые помните.

Таблица двоичных чисел от 0 до 15 c 16-ричным представлением:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 8 9 A B C D E F

Недостающие значения тоже нетрудно вычислить, прибавляя по 1 к известным значениям.

Перевод целых чисел

Итак, начнем с перевода сразу в двоичную систему. Возьмём то же число 81010. Нам нужно разложить это число на слагаемые, равные степеням двойки.

  1. Ищем ближайшую к 810 степень двойки, не превосходящую его. Это 2 9 = 512.
  2. Вычитаем 512 из 810, получаем 298.
  3. Повторим шаги 1 и 2, пока не останется 1 или 0.
  4. У нас получилось так: 810 = 512 + 256 + 32 + 8 + 2 = 2 9 + 2 8 + 2 5 + 2 3 + 2 1 .

Способ 1: Расставить 1 по тем разрядам, какие получились показатели у слагаемых. В нашем примере это 9, 8, 5, 3 и 1. В остальных местах будут стоять нули. Итак, мы получили двоичное представление числа 81010 = 11001010102 . Единицы стоят на 9-м, 8-м, 5-м, 3-м и 1-м местах, считая справа налево с нуля.

Способ 2: Распишем слагаемые как степени двойки друг под другом, начиная с большего.

2 9 = 1000000000 (1 и девять нулей) +
2 8 = 100000000 (1 и восемь нулей) +
2 5 = 100000 (1 и пять нулей) +
2 3 = 1000 (1 и три нуля) +
2 1 = 10 (1 и один ноль)

А теперь сложим эти ступеньки вместе, как складывают веер: 1100101010 .

Вот и всё. Попутно также просто решается задача «сколько единиц в двоичной записи числа 810?».

Ответ — столько, сколько слагаемых (степеней двойки) в таком его представлении. У 810 их 5.

Теперь пример попроще.

Переведём число 63 в 5-ричную систему счисления. Ближайшая к 63 степень числа 5 — это 25 (квадрат 5). Куб (125) будет уже много. То есть 63 лежит между квадратом 5 и кубом. Тогда подберем коэффициент для 5 2 . Это 2.

Получаем 6310 = 50 + 13 = 50 + 10 + 3 = 2 * 5 2 + 2 * 5 + 3 = 2235 .

Ну и, наконец, совсем лёгкие переводы между 8- и 16-ричными системами. Так как их основанием является степень двойки, то перевод делается автоматически, просто заменой цифр на их двоичное представление. Для 8-ричной системы каждая цифра заменяется тремя двоичными разрядами, а для 16-ричной четырьмя. При этом все ведущие нули обязательны, кроме самого старшего разряда.

Переведем в двоичную систему число 5478.

5478= 101 100 111
5 4 7

Ещё одно, например 7D6A16.

7D6A16= (0)111 1101 0110 1010
7 D 6 A

Переведем в 16-ричную систему число 7368. Сначала цифры запишем тройками, а потом поделим их на четверки с конца: 7368 = 111 011 110 = 1 1101 1110 = 1DE16 . Переведем в 8-ричную систему число C2516. Сначала цифры запишем четвёрками, а потом поделим их на тройки с конца: C2516 = 1100 0010 0101 = 110 000 100 101 = 60458 . Теперь рассмотрим перевод обратно в десятичную. Он труда не представляет, главное не ошибиться в расчётах. Раскладываем число на многочлен со степенями основания и коэффициентами при них. Потом всё умножаем и складываем. E6816 = 14 * 16 2 + 6 * 16 + 8 = 3688 . 7328 = 7 * 8 2 + 3*8 + 2 = 474 .

Перевод отрицательных чисел

Здесь нужно учесть, что число будет представлено в дополнительном коде. Для перевода числа в дополнительный код нужно знать конечный размер числа, то есть во что мы хотим его вписать — в байт, в два байта, в четыре. Старший разряд числа означает знак. Если там 0, то число положительное, если 1, то отрицательное. Слева число дополняется знаковым разрядом. Беззнаковые (unsigned) числа мы не рассматриваем, они всегда положительные, а старший разряд в них используется как информационный.

Для перевода отрицательного числа в двоичный дополнительный код нужно перевести положительное число в двоичную систему, потом поменять нули на единицы и единицы на нули. Затем прибавить к результату 1.

Итак, переведем число -79 в двоичную систему. Число займёт у нас один байт.

Переводим 79 в двоичную систему, 79 = 1001111. Дополним слева нулями до размера байта, 8 разрядов, получаем 01001111. Меняем 1 на 0 и 0 на 1. Получаем 10110000. К результату прибавляем 1, получаем ответ 10110001 . Попутно отвечаем на вопрос ЕГЭ «сколько единиц в двоичном представлении числа -79?». Ответ — 4.

Прибавление 1 к инверсии числа позволяет устранить разницу между представлениями +0 = 00000000 и -0 = 11111111. В дополнительном коде они будут записаны одинаково 00000000.

Перевод дробных чисел

Дробные числа переводятся способом, обратным делению целых чисел на основание, который мы рассмотрели в самом начале. То есть при помощи последовательного умножения на новое основание с собиранием целых частей. Полученные при умножении целые части собираются, но не участвуют в следующих операциях. Умножаются только дробные. Если исходное число больше 1, то целая и дробная части переводятся отдельно, потом склеиваются.

Переведем число 0,6752 в двоичную систему.

0 ,6752
*2
1 ,3504
*2
0 ,7008
*2
1 ,4016
*2
0 ,8032
*2
1 ,6064
*2
1 ,2128

Процесс можно продолжать долго, пока не получим все нули в дробной части или будет достигнута требуемая точность. Остановимся пока на 6-м знаке.

Получается 0,6752 = 0,101011 .

Если число было 5,6752, то в двоичном виде оно будет 101,101011 .

  • Авторские методические материалы
  • Задачи по математике
  • Задачи по физике
  • Биология
  • Подготовка к ЕГЭ
  • Задачи по химии
  • Астрономия
  • Статьи об образовании
  • История науки

ДРОБНЫЕ ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ

В любой системе счисления нужно уметь представлять не только целые числа, но и дробные. С математической точки зрения это ординарная задача, которая давно решена. Однако с точки зрения компьютерной техники это далеко не тривиальная проблема, во многом связанная с архитектурой компьютера. Ресурсы компьютеров не бесконечны, и основной трудностью является представление периодических и непериодических дробей. Следовательно, такие дроби следует округлять, задавать класс точности участвующих (и могущих появиться в результате вычислений!) чисел без потери точности вычислений, а также следить за тем, чтобы потеря точности не произошла при переводе чисел из одной системы счисления в другую. Особенно важно аккуратно производить вычисления при операциях с плавающей точкой.

Запишем формулу представления дробного числа в позиционной системе счисления:

Ap = an-1·p n-1 +an-2·p n-2 + . + a1·p 1 +a0·p 0 +a-1·p -1 +a-2·p -2 + . + a-m·p -m , [4.1]

В случае десятичной системы счисления получим:

24,732 = 2·10 1 +4·10 0 +7·10 -1 +3·10 -2

Перевод дробного числа из двоичной системы счисления в десятичную производится по следующей схеме:

101101,1012 = 1·2 5 +0·2 4 +1·2 3 +1·2 2 +0·2 1 +1·2 0 +1·2 -1 +0·2 -2 +1·2 -3 =45,625

Перевод дробного числа из десятичной системы счисления в двоичную осуществляется по следующему алгоритму:

Пример: Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.

Перевод целой части дает 20610=110011102 по ранее описанным алгоритмам; дробную часть умножаем на основание 2, занося целые части произведения в разряды после запятой искомого дробного двоичного числа:

.116 • 2 = 0.232 .232 • 2 = 0.464 .464 • 2 = 0.928 .928 • 2 = 1.856 .856 • 2 = 1.712 .712 • 2 = 1.424 .424 • 2 = 0.848 .848 • 2 = 1.696 .696 • 2 = 1.392 .784 • 2 = 0.784 и т.д.

Получим: 20610=11001110,00011101102

Таблицу степеней первых восьми отрицательных степеней двойки можно посмотреть в Приложении.

1. Перевод дробных чисел из любой системы счисления в десятичную систему счисления

1. Целую часть числа переводим по алгоритму перевода целых чисел из любой системы счисления в десятичную систему счисления.

Умножаем каждую цифру в числе на основание системы счисления, возведённое в степень, соответствующую разряду цифры в числе, а затем все суммируем.

2. Дробную часть переводим по тому же алгоритму, но с учётом того, что возводим основание системы в отрицательные степени.

1. перевести число 101,11 2 в десятичную систему счисления.

Сначала рассмотрим число и определим разряды каждой цифры в числе, чтобы понимать в какую степень ставить основание системы счисления.

разряды1.png

Так как основание исходной системы счисления — \(2\), то получаем следующее решение.

пер1.png

В итоге получаем, что число 101,11 2 в двоичной системе счисления равно числу 5,75 10 в десятичной системе счисления.

2. перевести число B 6,38 16 в десятичную систему счисления.

Рассмотрим число и определим разряды каждой цифры в числе, чтобы понимать, в какую степень ставить основание системы счисления.

2.png

Так как основание исходной системы счисления — \(1\)\(6\), то получаем следующее решение. Также учтём, что число \(B\) в шестнадцатеричной системе счисления — это число \(11\) в десятичной системе счисления.

рис3.png

В итоге получаем, что число B 6,38 16 в шестнадцатеричной системе счисления равно числу 182,21875 10 в десятичной системе счисления.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *