Перевод чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную
Перевод чисел из десятичной системы в двоичную, восьмеричную и шестнадцатеричную более сложен и может осуществляться различными способами. Рассмотрим один из алгоритмов перевода на примере перевода чисел из десятичной системы в двоичную. При этом необходимо учитывать, что алгоритмы перевода целых чисел и правильных дробей будут различаться.
Алгоритм перевода целых десятичных чисел в двоичную систему счисления. Пусть Аод — целое десятичное число. Запишем его в виде суммы степеней основания 2 с двоичными коэффициентами. В его записи в развернутой форме будут отсутствовать отрицательные степени основания (числа 2):
Aw = ал-1'2" 1 + а„_ г-2п~2+ ... + а1-21 + а0-2°.
На первом шаге разделим число Аод на основание двоичной системы, то есть на 2. Частное от деления будет равно
ал-1'2" 2 + ап-2^П 3 + - + «1,
а остаток — равен а0.
На втором шаге целое частное опять разделим на 2, остаток от деления будет теперь равен av
Если продолжать этот процесс деления, то после п-го шага получим последовательность остатков:
а0, а j, ..., fln_x.
Легко заметить, что их последовательность совпадает с обратной последовательностью цифр целого двоичного числа, записанного в свернутой форме:
А = ««-I—«i«o .
Таким образом, достаточно записать остатки в обратной последовательности, чтобы получить искомое двоичное число.
Алгоритм перевода целого десятичного числа в двоичное будет следующим:
1. Последовательно выполнять деление исходного целого десятичного числа и получаемых целых частных на основание системы (на 2) до тех пор, пока не получится частное, меньшее делителя, то есть меньшее 2.
2. Записать полученные остатки в обратной последовательности.
В качестве примера рассмотрим перевод десятичного числа 19 в двоичную систему, записывая результаты в таблицу:
Десятичное число/ | Делитель | Остаток | Цифры | |
целое частное | (основание системы) | двоичного числа | ||
an 1 | i | |||
а, | ||||
а, | ||||
а, | ||||
В результате получаем двоичное число: А2 = aia3a2a1a0 = 100112 .
Алгоритм перевода правильных десятичных дробей в двоичную систему счисления. Пусть — правильная десятичная дробь. В ее записи в развернутой форме будут отсут- ствать положительные степени основания (числа 2):
Лд = a-i ■ 2 1 + °-2'2"2 + -
На первом шаге умножим число Лдд на основание двоичной системы, то есть на 2. Произведение будет равно:
а_ j + а_ 2 • 2 1 + ...
Целая часть будет равна а_г
На втором шаге оставшуюся дробную часть опять умножим на 2, получим целую часть, равную а2.
Описанный процесс необходимо продолжать до тех пор, пока в результате умножения мы не получим нулевую дробную часть или не будет достигнута требуемая точность вычислений.
Легко заметить, что последовательность полученных чисел совпадает с последовательностью цифр дробного двоичного числа, записанного в свернутой форме:
А2 — O-ifl-2 ...
Алгоритм перевода правильной десятичной дроби в двоичную будет следующим:
1. Последовательно выполнять умножение исходной десятичной дроби и получаемых дробных частей произведений на основание системы (на 2) до тех пор, пока не получится нулевая дробная часть или не будет достигнута требуемая точность вычислений.
2. Записать полученные целые части произведения в прямой последовательности.
В качестве примера рассмотрим перевод десятичной дроби 0,75 в двоичную систему, записывая результаты в таблицу:
Десятичная | Множитель | Целая часть | Цифры | |
дробь/дробная | (основание | произведения | двоичного | |
часть произведения | системы) | числа | ||
0,75 | г | |||
0,50 | ||||
0,00 |
В результате получаем двоичную дробь: А, = 0,о_,о 2 = 0,112.
Перевод чисел из системы с основанием р в систему с основанием q. Перевод чисел из позиционной системы с произвольным основанием р в систему с основанием q производится по алгоритмам, аналогичным рассмотренным выше.
Рассмотрим алгоритм перевода целых чисел на примере перевода целого десятичного числа А10 = 42410 в шестнадца- теричную систему, то есть из системы счисления с основанием р = 10 в систему счисления с основанием q = 16.
В процессе выполнения алгоритма необходимо обратить внимание, что все действия необходимо осуществлять в исходной системе счисления (в данном случае десятичной), а полученные остатки записывать цифрами новой системы счисления (в данном случае шестнадцатеричной).
Десятичное число/ целое частное | Делитель (основание системы) | Остаток | Цифры двоичного числа | |
ао \ | к | |||
Ю(А) | а1 | |||
Э2 |
В результате получаем шестнадцатеричное число:
-^16 = a2aiao = 1А816 .
Рассмотрим теперь алгоритм перевода дробных чисел на примере перевода десятичной дроби А10 = 0,625 в восьмеричную систему, то есть из системы счисления с основанием р = 10 в систему счисления с основанием q = 8.
В процессе выполнения алгоритма необходимо обратить внимание, что все действия необходимо осуществлять в исходной системе счисления (в данном случае десятичной), а полученные остатки записывать цифрами новой системы счисления (в данном случае восьмеричной).
Десятичная дробь/дробная часть произведения | Множитель (основание системы) | Целая часть произведения | Цифры двоичного числа |
0,40625 | а-1 | ||
0,25 | Э-2 М | ||
0,00 |
В результате получаем восьмеричную дробь: А8 = а_1а_2 = 0,328 .
Перевод чисел, содержащих и целую и дробную части, производится в два этапа. Отдельно переводится по соответствующему алгоритму целая часть и отдельно — дробная. В итоговой записи полученного числа целая часть от дробной отделяется запятой.
_ х «
3 ал* а н и я
2.13. Перевести целые десятичные числа 910, 1710 и 24310 в двоичную, восьмеричную и шестнадцатеричную системы счисления.
2.14. Перевести десятичные дроби О,210 и 0,3510 в двоичную, восьмеричную и шестнадцатеричную системы счисления с точностью до трех знаков после запятой.
2.15. Перевести десятичные числа 3,510 и 47,8510 в двоичную, восьмеричную и шестнадцатеричную системы счисления с точностью до трех знаков после запятой.