Организация ЭВМ и систем. Однопроцессорные ЭВМ. Часть 1

       

Преобразование десятичных чисел в двоичные


При работе с ЭВМ, особенно с микропроцессорами, очень часто приходится выполнять преобразование десятичных чисел в двоичные.

Для преобразования целого десятичного числа в двоичное необходимо разделить его на основание новой системы счисления (S = 2). Полученное частное снова делится на основание новой системы счисления, до тех пор пока частное, полученное в результате очередного деления, не будет меньше основания новой системы счисления. Последнее частное (являющееся старшим значащим разрядом) и все полученные остатки от деления составляют число в новой системе счисления.

Проиллюстрируем преобразование на примере.

Пример.

Перевести целое десятичное число 10(10)

в двоичное число.

Если процедуру перевода выполняет человек, то последний шаг получения частного, равного нулю, никогда не делается. Если перевод выполняется ЭВМ, то он необходим. Таким образом, полный вариант преобразования 10(10)

будет иметь следующий вид:

Пример.

Десятичное число 57(10)

преобразовать в двоичное число.



Для перевода дробных чисел (или дробных частей вещественных чисел) требуется другая процедура преобразования. Рассмотрим ее на примере.

Пример.

Десятичное число 0.375(10)

преобразовать в двоичное число.

1.   Умножим дробь на основание новой системы счисления S = 2: 2*0.375 = 0.75.

2.   Если результат умножения меньше единицы, то СЗР присваивают значение 0. Если больше единицы, то присваивают значение 1. Поскольку 0.75<1, то СЗР=0.

3.   Результат предыдущей операции вновь умножаем на основание новой системы счисления 2. Если бы он был больше единицы, то в этой операции умно­жения участвовала бы только его дробная часть. В данном случае: 2*0.75=1.5.

4.   Поскольку 1.5>1, то ближайшему разряду справа от СЗР присваивается значение один, а следующая операция умножения производится только над дробной частью числа 1.5, т.е. над числом 0.5: 2*0.5=1.

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


Таким образом, 0.375(10) = 0.011(2).

Если в результате умножения на основание новой системы счисления S = 2 результат не равен единице, операцию останавливают при достижении необходимой точности, а целую часть результата последней операции умножения используют в качестве значения МЗР.

Пример.

Десятичное число 0.34375(10)

преобразовать в двоичное число.



Таким образом, 0.34375(10) = 0.01011(2).

Пример.

Десятичное число 0.3(10)

преобразовать в двоичное число.



Далее будут следовать повторяющиеся группы операций и результатов, поэтому ограничимся восемью разрядами, т.е. 0.3(10) = 0.01001100(2).

Из рассмотренных выше примеров видно, что если десятичное число дробное, то его преобразование в двоичное должно выполняться отдельно над его целой и дробной частями.

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


Содержание раздела