Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОДЕРЖАНИЕ 3 (2).doc
Скачиваний:
46
Добавлен:
31.08.2019
Размер:
6 Мб
Скачать
☆
    1. Двоичная, восьмеричная, шестнадцатеричная и двоично-кодированные системы счисления

Двоичная система счисления имеет основание и алфавит . Веса разрядов двоичного числа

или

где .

Так как в этой двоичной системе счисления нельзя представить отрицательные числа, то для их записи перед числом ставят знак (–) минус. В качестве разделителя целой и дробной частей числа используют символ (.) точка. Отрицательное двоичное число –110011.0101 имеет количественный эквивалент

Запись чисел в двоичной системе счисления содержит длинные цепочки чередующихся 0 и 1, что сильно затрудняет их восприятие и запоминание человеком. Сравните запись десятичного целого +1356 с его двоичным эквивалентом +10101001100. Это является одной из причин, по которым в вычислительной технике кроме двоичной системы счисления применяют восьмеричную и шестнадцатеричную системы счисления.

В

Удвоеннй остаток

x1 A

01101 1011

1011

1.00101 ...

(X1Y)=1

00100

1011

(X1Y)=0

01000

1011

(X1Y)=0

10000

1011

(X1Y)=1

01010

1011

(X1Y)=0

10100

1011

(X1Y)=1

10010

B

1101 1011

1011 1.00101 ...

(X1Y)=1

0010

1011

(X1Y)=0

0100

1011

(X1Y)=0

1000

1011

(X1Y)=1

0101

1011

(X1Y)=0

1010

1011

(X1Y)=1

0001


системе с основанием используют алфавит цифр а в системе с основанием алфавит цифр . Количественные эквиваленты шестнадцатеричных цифр от A до F приведены в таблице:

Веса разрядов числа в восьмеричной системе счисления

Веса разрядов числа в шестнадцатеричной системе счисления

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

.

Количественный эквивалент шестнадцатеричного целого числа 3AF9 равен

,

так как количественные эквиваленты цифры A=10 и цифры F=15.

При подсчете количественного эквивалента дробной части числа удобно пользоваться следующим способом. Примите условно, что дробная часть числа является числом целым. Например, при подсчете дробной части числа 134.278 примем, что 27 – целое и имеет количественный эквивалент . Количественный эквивалент этого целого умножьте на вес младшего разряда дробной части числа. Например, при подсчете дробной части числа 134.278 получим . Тогда количественный эквивалент числа 134.278 равен .

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

Для преобразования числа из восьмеричной или шестнадцатеричной системы счисления в двоичную достаточно заменить в исходной записи числа каждую цифру ее двоичным эквивалентом. Двоичные коды цифр приведены в табл.2.2.

Например, результат преобразования числа 134.278 в двоичную систему счисления будет 001 011 100. 010 1112, а числа 3AF916 получится 0011 1010 1111 10012. Убедитесь, что количественные эквиваленты двоичных чисел действительно равны количественным эквивалентам их исходных представлений.

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

Например, двоичное число 1011100.010111 после разбиения на триады примет вид:

001 011 100. 010 111

а после разбиения на тетрады: 0101 1100. 0101 1100

Заменив двоичный код в каждой триаде или тетраде соответствующей ему восьмеричной или шестнадцатеричной цифрой, получим 134.278 и 5C.5C16 соответственно.

К

Таблица 2.2

Цифра

Количественный

эквивалент цифры

Двоичный код цифры

восьмеричной

шестнадцатеричной

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

000

001

010

011

100

101

110

111

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

онечно, запоминать число, представленное в восьмеричной или шестнадцатеричной системе, много проще чем в двоичной.

Системы счисления, цифры которых заменены их двоичными эквивалентами, называют двоично-кодированными системами счисления.

Заменяя цифры в шестнадцатеричном числе их двоичными кодами, фактически выполняют преобразование шестнадцатеричного числа в двоично-шестнадцатеричную систему счисления. Устраняя разбиение двоично-шестнадцатеричного числа на тетрады, преобразовывают его в двоичную систему счисления.

В ЭВМ десятичные числа представляют в двоично-десятичных системах счисления. Для этого десятичным цифрам приводят в соответствие двоичные коды, и каждую цифру десятичного числа заменяют ее двоичным кодом, подобно тому, как записывают шестнадцатеричные числа в двоично-шестнадцатеричной системе счисления.

Для кодирования 10 десятичных цифр необходима минимальная длина двоичного кода 4, так как двоичный код длиной 3 имеет только 8 комбинаций от 000 до 111. Двоичный код длиной 4 имеет 16 комбинаций от 0000 до 1111, которых более чем достаточно для кодирования цифр от 0 до 9.

Каждой десятичной цифре приводят в соответствие не менее чем один двоичный код. Причем код, приведенный в соответствие какой-либо цифре, не может быть приведен в соответствие другой цифре, иначе цифру нельзя распознать. Соответствие между десятичными цифрами и их двоичными кодами можно описать табличным способом, подобно тому, как в табл.2.2 описано соответствие шестнадцатеричных цифр и их двоичных кодов. Таблицу соответствия называют таблицей кодирования или кодовой таблицей.

Ничто не мешает строить таблицу кодирования, приводя в соответствие цифре 0 любой код из 16, а цифре 1, – любой другой код из оставшихся 15 кодов и т.д. Так как кодов 16, а цифр только 10, то 6 кодов будут лишними. Лишние коды можно запретить использовать для кодирования цифр (считать их значками, не имеющими смысла) или применить для кодирования некоторых уже закодированных цифр (разрешить одну цифру изображать двумя или большим числом разных значков). В последнем случае имеет место неоднозначность представления десятичных цифр двоичными кодами. Наличие в записи двоично-десятичного числа кода неиспользуемого для кодирования десятичных цифр следует рассматривать как ошибку в записи числа.

В табл.2.3 в колонке 2 приведен вариант произвольного кодирования десятичных цифр двоичными кодами. В этом варианте коды цифр выбраны произвольно и 6 кодов: 0101, 0111, 1000, 1001, 1010, 1011 не используются. Десятичное число 230,14 в этом произвольном коде будет записано так:

1110 0110 1000 . 0001 1111

Из всего множества вариантов кодирования выделяют подмножество кодов называемых взвешенными кодами. Каждая двоичная цифра во взвешенном коде имеет вес. Значение кодируемой десятичной цифры можно вычислить, суммируя веса двоичных цифр кода равных 1. В табл.2.3 в колонках 3 и 4 приведены два варианта взвешенных кодов с весами цифр 8421 и 2421.

Таблица 2.3

Дес.

цифра

Двоичные коды десятичных цифр

Произвольный

8421

2421

8421+6

8421+3

Код Джонсона

1

2

3

4

5

6

7

8

0

1

2

3

4

5

6

7

8

9

1000

0001

1110

0110

1111

1101

1100

0011

0100

0010

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

0000

0001

0010

1001

1010

0101

1100

0111

1110

1111

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1100

1101

0010

0011

0000

0001

0110

0111

0100

0101

00000

00001

00011

00111

01111

11111

11110

11100

11000

10000

В коде 8421 десятичной цифре соответствует целое число в двоичной системе счисления. Например, цифре 5 соответствует код 0101, количественный эквивалент которого равен 4+1=5.

В коде 2421 десятичной цифре 3 соответствует код 1001. Вес левой 1 в этом коде 2, а правой – 1. Сумма весов единиц 2+1=3. Код цифры 9 – 1111, так как сумма весов четверки единиц 2+4+2+1=9.

В коде 8421 шесть кодов с количественным эквивалентом большим, чем 9, для кодирования десятичных цифр не используются. Например, код 1111 с количественным эквивалентом 15.

В коде 2421 колонки 4, так же как и в коде 8421, не использованы 6 кодов. Однако можно определить код 2421 так, что все 16 кодов будут использоваться. Для этого достаточно разрешить запись любого кода из 16 возможных. Тогда, например цифра 4 может быть представлена двумя кодами: 0100 и 1010, а цифра 5 – кодами: 1011 и 0101. В этом проявляется неоднозначность представления десятичных цифр в коде 2421. Ничего подобного нельзя сделать в коде 8421, так как количественный эквивалент любого неиспользованного кода превышает 9. Код 2421 интересен также тем, что содержит минимально возможные веса разрядов.

Взвешенных двоично-десятичных кодов много. Например, коды с весами 5211 или 4221. Взвешенные коды могут иметь отрицательные веса некоторых разрядов, например . Закодируйте в коде все десятичные цифры.

Десятичное число 230.14 в двоично-десятичном коде

2 3 0 , 1 4

8421: 0010 0011 0000 . 0001 0100; 2 3 0 , 1 4

2421: 1000 1001 0000 . 0001 1010 или 0010 0011 0000 . 0001 1010.

Запись 1111 0000 в двоично-десятичном коде 8421 не является числом, так как код 1111 не имеет количественного эквивалента десятичной цифры и не применяется для кодирования десятичных чисел. Эта же запись в коде 2421 или в коде соответствует десятичному числу 90.

Коды в колонках 5 и 6 называют взвешенными смещенными кодами. Если сопоставить коды одной строки в колонках 3 и 5, то не трудно видеть, что код в колонке 5 на 6 больше, чем в колонке 3. Значение 6 называют смещением. Смещение кода в колонке 6 равно 3.

Код в колонке 7 взвешенный со смещением (+4). Веса его разрядов совпадают с весами разрядов чисел в системе с основанием . Значение кода меньше значения кодируемой им цифры на 4 и может быть отрицательным. Например, код 1101 имеет значение (-8)×1+4×1+(-2)×0+1×1= -3, что на 4 меньше кодируемой им цифры 1.

Код Джонсона использует двоичный вектор длиной 5. Этот код интересен тем, что для увеличения значения цифры на 1 достаточно сдвинуть исходный код на 1 разряд влево с занесением в младший разряд цифры инверсной цифре выдвигаемой из старшего разряда. Например, для увеличения цифры 2 на 1 достаточно сдвинуть влево ее код 00011 с занесением инверсии 0 в старшем разряде в младший разряд. Действительно, получим 00111 – код цифры 3.

Разумеется, что для уменьшения цифры на 1 достаточно сдвинуть ее код на разряд вправо с занесением в освобождающийся старший разряд инверсии цифры выдвигаемой из младшего разряда. Например, сдвиг вправо кода 11111 (5) приведет к получению кода 01111 (4).

Безусловно, можно уменьшать или увеличивать цифру на 2, на 3 и т.д., выполняя сдвиг на 2 или 3 разряда соответственно.

Конструктор цифровых устройств в зависимости от их функции выбирает такой способ кодирования десятичных цифр, который позволяет обеспечить минимум затрат оборудования, максимальное быстродействие и/или иные показатели качества проектируемого изделия в условиях множества ограничений. При конструировании устройств выполняющих арифметические операции с десятичными числами можно использовать любой способ кодирования цифр и хранить таблицы сложения, вычитания и умножения двоично-десятичных цифр в предназначенных для этого устройствах памяти. Однако размерность этих таблиц 10´10 велика, что требует большого объема памяти и, следовательно, усложняет устройства. Достоинство двоичной системы счисления в том, что таблицы имеют минимальную размерность 2´2. Поэтому целесообразно выбирать такой способ кодирования десятичных цифр двоичными кодами, который позволяет вычислять сумму, разность или произведение десятичных цифр используя двоичные таблицы. В связи с этим получили распространение двоично-десятичные коды 8421; 8421+6 и 8421+3. Выполнение арифметических операций в этих кодах описано в разделе 4.