Перевод чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную
Перевод чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную более сложен и может осуществляться различными способами. Рассмотрим один из алгоритмов перевода на примере перевода чисел из десятичной системы в двоичную. При этом необходимо учитывать, что алгоритмы перевода целых чисел и правильных дробей будут различаться.
Алгоритм перевода целых десятичных чисел в двоичную систему счисления. Пусть Ацд - целое десятичное число. Запишем его в виде суммы степеней основания 2 с двоичными коэффициентами. В его записи в развернутой форме будут отсутствовать отрицательные степени основания (числа 2):
Ацд = аn-1 × 2n-1 + аn-2 × 2n-2 + ... + а1 × 21 + а0 × 20.
На первом шаге разделим число Ацд на основание двоичной системы, то есть на 2. Частное от деления будет равно
аn-1 × 2n-2 + аn-2 × 2n-3 + ... + а1 ,
а остаток - равен a0.
На втором шаге целое частное опять разделим на 2, остаток от деления будет теперь равен a1.
Если продолжать этот процесс деления, то после n-го шага получим последовательность остатков:
а0 , а1 , ... , аn-1.
Легко заметить, что их последовательность совпадает с обратной последовательностью цифр целого двоичного числа, записанного в свернутой форме:
A2 = an-1 ... a1 a0
Таким образом, достаточно записать остатки в обратной последовательности, чтобы получить искомое двоичное число.
Алгоритм перевода целого десятичного числа в двоичное будет следующим:
1. Последовательно выполнять деление исходного целого десятичного числа и получаемых целых частных на основание системы (на 2) до тех пор, пока не получится частное, меньшее делителя, то есть меньшее 2.
2. Записать полученные остатки в обратной последовательности.
В качестве примера рассмотрим перевод десятичного числа 19 в двоичную систему, записывая результаты в таблицу:
В результате получаем двоичное число:
А2 = a4 a3 a2 a1 a0 = 100112 .
Алгоритм перевода правильных десятичных дробей в двоичную систему счисления. Пусть Адд - правильная десятичная дробь. В ее записи в развернутой форме будут отсут-ствать положительные степени основания (числа 2):
Адд = a-1 × 2-1 + a-2 × 2-2 + ...
На первом шаге умножим число Адд на основание двоичной системы, то есть на 2. Произведение будет равно:
a-1 + a-2 × 2-1 + ...
Целая часть будет равна а-1
На втором шаге оставшуюся дробную часть опять умножим на 2, получим целую часть, равную а-2.
Описанный процесс необходимо продолжать до тех пор, пока в результате умножения мы не получим нулевую дробную часть или не будет достигнута требуемая точность вычислений.
Легко заметить, что последовательность полученных чисел совпадает с последовательностью цифр дробного двоичного числа, записанного в свернутой форме:
A2 = a-1 a-2 ...
Алгоритм перевода правильной десятичной дроби в двоичную будет следующим:
1. Последовательно выполнять умножение исходной десятичной дроби и получаемых дробных частей произведений на основание системы (на 2) до тех пор, пока не получится нулевая дробная часть или не будет достигнута требуемая точность вычислений.
2. Записать полученные целые части произведения в прямой последовательности.
В качестве примера рассмотрим перевод десятичной дроби 0,75 в двоичную систему, записывая результаты в таблицу:
В результате получаем двоичную дробь:
A2 = 0 , a-1 a-2 = 0,112
Перевод чисел из системы с основанием р в систему с основанием q. Перевод чисел из позиционной системы с произвольным основанием р в систему с основанием q производится по алгоритмам, аналогичным рассмотренным выше.
Рассмотрим алгоритм перевода целых чисел на примере перевода целого десятичного числа А10 = 42410 в шестнадцатеричную систему, то есть из системы счисления с основанием р = 10 в систему счисления с основанием q = 16.
В процессе выполнения алгоритма необходимо обратить внимание, что все действия необходимо осуществлять в исходной системе счисления (в данном случае десятичной), а полученные остатки записывать цифрами новой системы счисления (в данном случае шестнадцатеричной).
В результате получаем шестнадцатеричное число:
A16 = a2 a1 a0 = 1A816.
Рассмотрим теперь алгоритм перевода дробных чисел на примере перевода десятичной дроби A10 = 0,625 в восьмеричную систему, то есть из системы счисления с основанием р = 10 в систему счисления с основанием q = 8.
В процессе выполнения алгоритма необходимо обратить внимание, что все действия необходимо осуществлять в исходной системе счисления (в данном случае десятичной), а полученные остатки записывать цифрами новой системы счисления (в данном случае восьмеричной).
В результате получаем восьмеричную дробь:
A8 = a-1 a-2 = 0,328.
Перевод чисел, содержащих и целую и дробную части, производится в два этапа. Отдельно переводится по соответствующему алгоритму целая часть и отдельно - дробная. В итоговой записи полученного числа целая часть от дробной отделяется запятой.
3адания
1.13. Перевести целые десятичные числа 910, 1710 и 24310 в двоичную, восьмеричную и шестнадцатеричную системы счисления.
1.14. Перевести десятичные дроби 0,210 и 0,3510 в двоичную, восьмеричную и шестнадцатеричную системы счисления с точностью до трех знаков после запятой.
1.15. Перевести десятичные числа 3,510 и 47,8510 в двоичную, восьмеричную и шестнадцатеричную системы счисления с точностью до трех знаков после запятой.
|