Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
гл1-1.doc
Скачиваний:
132
Добавлен:
19.03.2016
Размер:
437.25 Кб
Скачать

Преобразование чисел из одной системы счисления в другую

Так как десятичная система для нас удобна и привычна, все арифметические действия мы делаем в ней, то преобразование чисел из произвольной недесятичной (q10) системы в десятичную удобно выполнять на основе разложения по степенямq, например:

11100111(2)= 127+126+125+024+023+122+121+120=128+64+32+4+2+1=231(10),

или 347(8)= 382+481+780=364+48+7=231(10)

Преобразование из десятичной в прочие системы счисления проводится с помощью правил умножения-деления. При этом целая и дробная части переводятся отдельно.

Рассмотрим алгоритм на примере перевода десятичного числа 231 в двоичную систему, совершенно аналогичен перевод из десятичной системы в любую q-ичную. Разделим число на два (основание системы) нацело 2312=115 и остаток 1, т.е. можно записать

231=11521+120.

Число 115 (такой двоичной цифры нет) тоже может быть разделено нацело на 2, т.е. 1152=57 и остаток 1. По аналогии запишем

231=(572+1)2+1= 5722+111+120

аналогично продолжим процесс дальше

572=28 остаток 1; 231=((282+1)2+1)2+1= 2823+122+121+120

282=14 остаток 0; 231=(((142+0)2+1)2+1)2+1=1424+122+121+120

142=7 остаток 0; 231=((((72+0)2+0)2+1)2+1)2+1=725+122+121+120

72=3 остаток 1; 231=(((((32+1)2+0)2+0)2+1)2+1)2+1=326+125+122+121+120

32=1; остаток 1; далее процесс продолжать нельзя т.к. 1 не делится нацело на 2

231=((((((12+1)2+1)2+0)2+0)2+1)2+1)2+1=127+126+125+122+121+120

Таким образом, последовательное деление нацело позволяет разложить число по степеням двойки, а это в краткой записи и есть двоичное изображение числа.

231 =127+126+125+024+023 +122+121+120= 11100111(2)

Эти выкладки можно сократить, записав следующим образом процесс деления.

_231|_2_

230| 115|_2_

1 114|57|_2_

1 56|28|_2_

1 28|14|_2_231(10)=11100111(2)

0 14|7 |_2_

0 6 |3 |_2_

1 2|1

1

Читая частное и остатки от деления в порядке обратном получению, получим двоичную запись числа. Такой способ перевода чисел называется правилом (алгоритмом) последовательного деления, очевидно, что он применим для любого основания.

Для дробных чисел правило последовательного деления заменяется правилом последовательного умножения, которое также рассмотрим на примере. Переведем 0.8125 из десятичной системы в двоичную систему счисления.

Умножим его на 2, т.е. 0.81252=1.625 или 0.8125=(1+0.625)2-1=12-1+0.6252-1

Аналогично 0.625=(1+0.25)2-1или

0.8125=12-1+(1+0.25)2-12-1=12-1+12-2+0,252-2, но 0.25=0.52-1

0.8125=12-1+(1+0.52-1)2-12-1=12-1+12-2+0,52-3, но 0.5=12-1

0.8125=12-1+12-2+12-12-3=12-1+12-2+12-4.

В итоге получаем, что 0.8125(10)=12-1+12-2+12-4=0.1101(2). Сокращая выкладки, получим правило (алгоритм)последовательного умножения.

0

8125

2

1

625

2

1

250

2

0

5

2

1

0

Попутно заметим, что в десятичной системе счисления правильная дробь переводится в десятичную дробь в конечном виде только в том случае, если ее знаменатель в качестве множителей имеет только степени двоек и пятерок, т.е. дробь имеет вид . Все же остальные дроби переводятся в бесконечные периодические дроби. Аналогично, в двоичной системе счисления конечный вид получают дроби, где в знаменателе только степени двойки, т.е. большинство десятичных конечных дробей в двоичной системе счисления будут бесконечными периодическими дробями.

Если ведутся приближенные вычисления, то последний разряд является сомнительным, и для обеспечения в приближенных вычислениях одинаковой точности в двоичной и десятичной записях числа без бесконечных дробей, достаточно взять число двоичных разрядов в (log2103.3) 4 раза больше, чем десятичных .

Между двоичной системой счисления с одной стороны и восьмеричной и шестнадцатеричной (заметим 8 и 16 – есть третья и четвертая степени двойки) с другой стороны, существует связь, позволяющая легко переводить числа из одной системы в другую. Рассмотрим на примере:

231.8125(10)=11100111.1101(2)= 127+126+125+122+121+120+12-1+12-2+12-4 .

Для перевода в шестнадцатеричную систему счисления сгруппируем целую и дробную части в группы по четыре члена и вынесем в каждой группе за скобки множители кратные 24, получим:

(123+122+121+020)24+(123+122+121+120)+(123+122+021 +120)2-4= =(123+122+121+0)161+(122+121+120)160+(123+122+021 +120)16-1= =14161+7160+1316-1=E7.D(16)

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

Аналогичное правило для восьмеричной системы читатель выведет сам.