Компьютер работает с двоичными кодами, Пользователю удобнее иметь дело с десятичными или, по крайней мере, с шестнадцатеричными цифрами. Поэтому возникает необходимость перевода чисел из одной системы счисления в другую. Преобразование числа А из системы счисления с основанием q в систему счисления с основанием p ( преобразование A(q) ® A(p)) осуществляется по правилу замещения ли по правилу деления-умножения на основание системы счисления.
Правило замещения реализуется на основании формулы (1.1.) и предусматривает выполнение арифметических операций (возведения в степень, сложения) с кодами чисел в новой системе счисления. Поэтому оно чаще всего применяется для преобразования чисел из недесятичной системы счисления в десятичную.
Пример 2.1. выполнить преобразование A(2) ® A(10) , если A(2) = 10101,011
A(10) = 1×24 + 0×23 + 1×22 + 0×21 + 1×20 + 0×2-1 + 1×2-2 + 1×2-3 =
16 + 4 + 1 + 1/4 + 1/8 = 21,375
Правило деления-умножения предусматривает выполнение арифметических операций с кодами чисел в исходной системе счисления, поэтому его удобно применять для преобразования десятичных чисел в любые другие позиционные системы счисления.
|
|
Для преобразования целых чисел используется правило деления, а для преобразования правильных дробей – правило умножения. Для преобразования смешанных чисел используются оба правила соответственно для целой и дробной частей числа.
Правило деления. При преобразовании целого числа, записанного в q -ичной (десятичной) системе счисления, в р -ичную необходимо последовательно делить исходное число и получаемые частные на новое основание р, представленное в q -ичной (десятичной) системе. Деление продолжают до тех пор, пока очередное частное не станет меньше р. После замены полученных остатков и последнего частного числами р -ичной системы счисления записывается код числа в новой системе счисления. При этом старшей цифрой является последнее частное, а следующие за ней цифры соответствуют остаткам, записанным в последовательности, обратной их получению.
Пример 8. Выполнить преобразование A(10) ® A(16) , если A(10) = 351.
351 16
-
336 21 16
-
15 16 1
В результате преобразования получаем A(16) = 15F
Правило умножения. При преобразовании дробного числа, записанного в q -ичной (десятичной) системе счисления, в р -ичную необходимо последовательно умножать и дробные части получающихся произведений на основание р, представленное в исходной q -ичной (десятичной) системе счисления. Целые числа получаемых произведений, замененные цифрами р -ичной системы дают последовательность цифр в новой р -ичной системе счисления.
Умножение необходимо производить до получения в искомом р -ичном коде цифры того разряда, вес которого меньше веса младшего разряда искомой q -ичной (десятичной) дроби. При этом в общем случае код получается приближенно, и поэтому в случае обратного преобразования результат может не совпадать с исходным кодом.
|
|
Пример 9. Выполнить преобразование A(10) ® A(16) , если A(10) = 0,32.
0, 32
х
5, 12
х
1, 92
х
14, 72
. …
В результате преобразования получаем A(16) = 0,51Е …
Пример 10. Выполнить преобразование A(10) ® A(8) , если A(10) = 134,92
134 8 - 128 16 8 - 6 16 2 |
0, 92
х
7, 36 х 2, 88 х 7, 04 . … | |||||||||||||||||||
В результате преобразования получаем A(8) = 206,727 …
Как следует из примера, процесс перевода дробной части можно продолжить до бесконечности, компьютер же оперирует числами, представленными конечными наборами цифр. Поэтому дроби округляют в соответствии с правилами преобразования и весом младшего разряда исходной дроби.
Преобразование чисел из двоичной системы счисления в восьмеричную или шестнадцатеричную и обратно осуществляется по упрощенным правилам с учетом того, что основания этих систем счисления кратны целой степени 2, т. е. 8=23, a 16=24.
Это означает, что при преобразовании восьмеричного кода числа в двоичный, необходимо каждую восьмеричную цифру заменить соответствующим трехзначным двоичным кодом (триадой).
При, преобразовании шестнадцатеричного кода числа в двоичный необходимо каждую шестнадцатеричную цифру заменить четырехзначным двоичным кодом (тетрадой).
При преобразовании двоичного кода в восьмеричный или шестнадцатеричный двоичный код делится соответственно на триады или тетрады влево и вправо от запятой (точки), разделяющей целую и дробные части числа. Затем триады (тетрады) заменяются восьмеричными (шестнадцатеричными) цифрами.
Например: 1CD,4(16) = 000111001101,0100(2) = 715,2(8) .
Если при разбиении двоичного кода в крайних триадах (тетрадах) недостает цифр до нужного количества, они дополняются нулями. Соответственно, «лишние» нули слева и справа, не вошедшие в триады (тетрады) отбрасываются.
Самостоятельная работа:
Попробуйте преобразовать число 77.778 → А16 , используя правила «деления» и «умножения», а не упрощенные правила.
Таблицы соответствия двоичных (Bin), восьмеричных (Oct), шестнадцатеричных (Hex) и десятичных (Dec) цифр.
Bin | Oct | Hex | Dec |
A | |||
B | |||
C | |||
D | |||
E | |||
F |