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

 

 


ЭВМ работает с двоичными числами, человеку проще воспринимать числа в десятичной системе счисления, а шестнадцатеричная форма записи наиболее компактна. Поэтому повсеместно требуется переводить числа из одной системы счисления в другую. Здесь необходимо отметить, что перевод некоторого числа из системы с основанием N1 в систему с основанием N2 производится одинаково для всех систем счисления, однако правила перевода целых и дробных чисел различаются. Есть некоторые нюансы при переводе дробного числа. Дело в том, что в результате перевода число может оказаться иррациональным с бесконечным числом разрядов в дробной части. Во всех ЭВМ существует ограничение на количество разрядов, с которыми она работает4. Поэтому какое-то количество разрядов просто отбрасывают, т.е. производят округление числа. Естественно, в этом случае появляется разница между переводимым числом (C) и результатом его перевода (R), которая называется ошибкой округления. Рассчитать относительную ошибку перевода (ζ%) можно по следующей простой формуле:

 (2.3)

Для того чтобы перевести целое число СN1 в систему счисления с основанием N2 необходимо последовательно делить его на N2, выписывая остатки от деления, до тех пор, пока остаток от деления станет не больше N2. Приведем пример.

Пример 2.3. Перевод числа С10=41 в двоичную, восьмеричную и шестнадцатеричную системы счисления.

  

Как следует из примера 2.3 удобно представлять процесс деления в виде последовательности цифр, разделенных чертой. Рассмотрим подробно перевод числа 41 в двоичную систему счисления. На первом шаге 41 делится на 2, частное от деления равное 20 записывается над чертой справа от делимого, а остаток от деления равный 1 под делимым. На втором шаге 20делится на 2, частное от деления равное 10 записывается над чертой справа от делимого, а остаток от деления равный 0 под делимым. Так продолжается до тех пор, пока полученное на очередном шаге делимое не станет ≤1. И, наконец, полученные остатки от деления и последнее частное записываются в порядке обратном направлению деления.

Для того чтобы перевести дробное число СN1 в систему счисления с основанием N2 необходимо последовательно умножать его на N2, выписывая целые части, полученные в результате умножения, до тех пор, пока количество разрядов полученного числа не достигнет заданного5. Приведем пример.

Пример 2.4. Перевод числа С10=0,375 в двоичную, восьмеричную и шестнадцатеричную системы счисления

  

Перевод дробного числа, также удобно представлять в виде последовательности цифр, разделенных чертой. Рассмотрим подробно перевод числа 0,375 в двоичную систему счисления. На первом шаге 0,375 умножается на 2, полученное множимое равное 0,75 записывается над чертой справа от 0,375, а целая часть равная 0 под множимым 0,375. На втором шаге 0,75умножается на 2, полученное множимое равное 0,5 записывается над чертой справа от 0,75, а целая часть равная 1 под множимым 0,75. Так продолжается до тех пор, пока полученное на очередном шаге множимое не станет равно 0, или не заполняться все разряды, отведенные для этого числа. И, наконец, полученные целые части записываются в прямом порядке.

Пример 2.5. Обратный перевод чисел из системы с основанием N2 в систему с основанием N1





Так как двоичная, восьмеричная и шестнадцатеричная системы счисления связаны между собой через степени числа 2, то прямое и обратное преобразования между этими системами можно производить гораздо проще. Давайте, обратим внимание на таблицу 2.1.

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

Заменив каждую триаду (тетраду) соответствующей восьмеричной (шестнадцатеричной) цифрой, получают число, записанное в восьмеричной (шестнадцатеричной) системе счисления.

Пример 2.6. Упрощенный перевод целого числа из двоичной системы счисления в восьмеричную (шестнадцатеричную)





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

Пример 2.7. Упрощенный перевод дробного числа из двоичной системы счисления в восьмеричную (шестнадцатеричную)





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


Лекция добавлена 28.02.2013 в 03:20:54