Файл: Вводый курс цифровой электроники (К.Фрике, 2003).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.06.2025

Просмотров: 4495

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Глава 2. Кодирование и системы счисления

эквивалента числа 7 и дополнение двоичного эквивалента числа 3 равняется:

, 0 1 1 1

7io

1101

- Зю

-1 0 1 0 0

-1 0 0 0 0

=0100 tio

Вычитание числа 10000^, проведенное в соответствии с уравне­ нием (2.10), дает правильный результат 0100^. Это может произой­ ти в 4-битовом компьютере просто потому, что высший результат игнорируется. Итак, при проведении вычитания с помош;ью точно­ го дополнения нет необходимости учитывать высший перенос С4. Но необходимо соблюдать осторожность в связи с переполнением числового диапазона. Исследуем это ниже.

2.3.6. Переполнение числового диапазона

Исходя из вышесказанного возникает необходимость рассмотрения проблемы переполнения числового диапазона (overflow) в связи с представлением на основе точного дополнения. Переполнение число­ вого диапазона может происходить только в двух случаях. А имен­ но, когда суммируются два положительных числа либо суммируют­ ся два отрицательных числа. В связи с этим рассмотрим несколько примеров, относяш;ихся к 4-битовому представлению.

Пример переполнения числового диапазона при сложении двух положительных чисел:

0 1 0 1

5io

0 1 0 1

5io

= 1010

-610

Очевидно, что результат является неправильным. Ошибка воз­ никает за счет переноса 3-го разряда на место 4-го разряда, что приводит к симуляции отрицательного числа. Этот пере­ нос сз в представлении, используюш;ем п бит, обычно обозна­ чается как Сп-1- Перенос с^ (в обш;ем случае с^) из разряда 4 в разряд 5 называется Carry {Су). В этом примере данный перенос не имеет места.

2,3. Арифметические операции с фиксированной запятой

Пример переполнения численного диапазона при сложении от­ рицательных чисел:

+

1011

-5io

1011

-5io

- ( 1 ) 0 1 1 0

6io

В этом примере также появляется неправильный результат. Имел место не перенос Cn-i из разряда 3 в разряд 4, а перенос Сп ИЗ разряда 4 в разряд 5.

Для сравнения проведем сложение двух отрицательных чисел без переполнения числового диапазона:

+11111101 —3io

=(1)1100 -4io- l i o

Имели место переносы Сп и c^-i.

Сведем эти результаты вместе с другими, здесь не показанны­ ми случаями, в таблицу. На основе результатов, представленных в табл. 2.3, для двух двоичных чисел Л и Б, которые лежат в чи­ словом диапазоне, определяемом п-битовом представлением на базе точного дополнения, можно установить перенос переполнения при сложении.

Таблица 2.3. Перенос переполнения при сложении в случае п-битового представления на основе точного дополнения.

Правильный результат

Перенос переполнения

А-\-В

Сп = 0, C n - l = 0

Сп ~ 0, Сп - 1 = 1

А-В

Сп =

Сп—\

невозможен

-А-В

Сп = 1,

Сп - 1 = 1

Сп ^^ -L) Сп — 1 ^^^ vJ

Следовательно, правильный результат имеет место тогда, когда Сп = c^i-i, неправильный результат — когда Сп ф Cn-i-

2.3.7. Умножение

Умножение выполняется так же, как и для десятичной системы. Рас­ смотрим пример умножения на основе двоичной системы для чисел


Глава 2. Кодирование и системы счисления

IOD X UD = IIOD:

1010

""ion

1010

1 0 1 0

10 1 О

11 1 ОНО

Наибольший из ожидаемых результатов Е умножения двух п- битовых слов представляет собой:

£; = (2^ - 1) . {2'' -I) = 2^"" - 2''"'^ + 1 < г^"" - 1

Следовательно, результат умножения двух п-битовых чисел име­ ет длину 2п бит. Но он меньше, чем максимальное представляемое с помош;ью 2п бит двоичное число 2^^ — 1.

Сказанное выше справедливо для умножения положительных чи­ сел. При вычислениях с использованием представления на основе точного дополнения могут быть применены специальные алгорит­ мы [20], или следует числа на основе точного дополнения перед умно­ жением преобразовать обратно в исходные значения, а результат перевести в соответствии со знаком в желаемое представление.

При умножении чисел с фиксированной запятой вначале числа умножаются без учета запятой. Затем запятая вводится в соответ­ ствии с правилом: умножение двух чисел с п и А; разрядами после запятой даст произведение с п -f /с разрядами после запятой.

2.3.8. Деление

Для деления можно использовать тот же самый алгоритм, что и в десятичной системе. Продемонстрируем это на примере уравнения lOi^ : 2г> = 5D:

1 0

1 0

1

0

0

1 0

~ 1 0

1

0

1

0 1 0

10

о

Соответственно при делении числа с п разрядами после запятой на число с к разрядами после запятой частное имеет п — к разрядов

2.4' Шестнадцатеричный код 29

после запятой. Так в соответствии с верхним примером имеем:

10,10-101,1 = 1101,110

Деление чисел с точным дополнением также можно свести к умножению и сложению [20].

2.4. Шестнадцатеричный код

На практике наряду с двоичным кодом внедрился шестнадцатерич­ ный код, поскольку он обеспечивает лучшее обозрение длинных дво­ ичных чисел. Шестнадцать шестнадцатеричных цифр определены в табл. 2.4. Шестнадцатеричные цифры больше девяти представлены буквами A-F. Для преобразования двоичных в шестнадцатеричные числа объединяют по четыре цифры двоичного числа, которые ин­ терпретируются как шестнадцатеричный разряд. Благодаря этому шестнадцатеричное число занимает только четверть разрядов, за­ нимаемых двоичным числом одинаковой величины.

Например:

ОНО 1100 1111

G С

Итак, справедливо выражение 0110011001III2 = GCFi^.

Таблица 2.4. Шестнадцатеричные числа.

десятичные

двоичные

шестнадца­

десятичные

двоичные

шестнадца­

теричные

теричные

0

0000

0

8

1000

8

1

0001

1

9

1001

9

2

0010

2

10

1010

А

3

ООП

3

11

1011

В

4

0100

4

12

1100

С

5

0101

5

13

1101

D

6

ОНО

6

14

1110

Е

7

0111

7

15

1111

F

В качестве обозначения шестнадцатеричного числа использует­ ся индекс Н, Преобразование шестнадцатеричного числа в десятич­ ное число и обратно проще всего производить через соответствую­ щее двоичное число. Также возможно производить преобразование с помощью алгоритма, как при преобразовании двоичного числа в


30 Глава 2. Кодирование и системы счисления

десятичное число. Обратное преобразование производится анало­ гично представленному уравнением (2.2).

2.5. Восьмеричный код

Восьмеричный код применяется аналогично шестнадцатеричному, только объединяются лишь по 3 разряда двоичного числа. Для вось­ меричного кода применяются цифры десятичного кода от О до 7, он обозначается индексом 0.

Например:

110 101 100 011

Следовательно, справедливо 110101000112 = 65438-

2.6, Код Грея

Часто в цифровой технике требуется для числового кода схема ко­ дирования, в соответствии с которой при переходе от одного числа к следующему изменялась бы только одна цифра. Выполнение это­ го условия необходимо, когда вследствие технических неточностей момент переключения не может быть точно выдержан. При пере­ ключении двух цифр из-за этого могут возникнуть неправильные коммутационные операции. В качестве примера подобной ошибки рассмотрим переключение от lio к 2io в двоичном коде:

0001 — ^ — ^

I

0000

ООП

0010

^ — ^

^ ^

При этом переключении изменяются биты О и 1 при одновремен­ ном переключении непосредственно достигается новое число. Если вначале изменяется бит О, то появляется число 0000, и только когда изменяется бит 1, получаем правильное число 0010. Если же снача­ ла изменяется бит 1 и потом изменяется бит О, то в промежутке возникает число ООН. Коды Грея позволяют избежать этой очень серьезной ошибки за счет того, что при переходе от одного кодово­ го слова к следуюш;ему изменяется только один разряд. В табл. 2.5 представлен 4-разрядный код Грея. В дополнение к вышесказанно­ му показанный код имеет свойство, которое заключается в его ци­ кличности, так как также и при переходе от высшего числа (15D)

2.7, Двоично-десятичный код

низшему числу изменяется только один разряд. Циклические коды Грея могут быть сконструированы р^ля всех прямых длин периодов.

Таблица 2.5. Пример 4-разрядного кода Грея.

Десятичные (числа)

Код Грея

Десятичные (числа)

Код Грея

0

0000

8

1100

1

0001

9

1101

2

ООП

10

1111

3

0010

11

1110

4

ОНО

12

1010

5

0111

13

1011

6

0101

14

1001

7

0100

15

1000

2.7. Двоично-десятичный код

Если мы хотим подвести к десятичным цифрам некоторые отмет­ ки, то для этого подойдет код, в котором отдельным десятичным цифрам приданы двоично-кодированные кодовые слова. Этот код обозначается как двоично-десятичный код (BCD-код). Подходящая возможность реализации заключается в том, чтобы представить че­ рез соответствующую каждой из них 4-разрядную двоичную цифру. Поскольку отдельные разряды имеют веса 8, 4, 2 и 1, данный код называют кодом типа 8-4-2-1. Существует также возможность по­ строить двоично-десятичный код 2, 4, 2, 1 (Aiken-Code). К другим двоично-десятичным кодам относятся код с избытком три (3-Excess- Code) и двоично-десятичный код Грея (BCD-Gray-Code) [5].

Таблица 2.6. Двоично-десятичный код.

Десятичная цифра

Код типа 8-4-2-1

Десятичная цифра

0

0000

1

^

1

0001

6

2

0010

7

3

ООН

8

4

0100

9

Код типа 8-4-2-1 0101 ОНО 0111 1000 1001


Глава 2. Кодирование и системы счисления

2.8. Алфавитно - цифровые коды

Существует большое количество кодов, осуществляющих предста­ вление алфавитно-цифровых символов с помощью двоичных цифр. Известным примером подобных символов является код ASCII (Ame­ rican Standard Code for Information Interchange), который содержит также ряд управляющих символов.

Таблица 2.7. Код ASCII (чЛ, управляющие символы)

ASCII

1 ASCII

00

10

01

1 1^

02

1 ^2

03

13

04

1 1^

05

15

06

16

07

17

08

18

09

19

ОА

lA

ОВ

IB

ОС

0D

ID

ОЕ

IE

OF

IF

2.9. Упражнения

Задача 2.1. Преобразуйте следующие двоичные числа в десятич­ ные числа:

а) 1110,101 б) 10011,1101

Задача 2.2. Преобразуйте следующие десятичные числа в двоич­ ные числа:

а) 22,125 б) 45,33

2.9. Упраэюнения

Задача 2.3. Рассчитайте приведенные ниже примеры с использо­ ванием точных дополнений при длине слова в 6 бит. Укажите, имеет ли место переполнение числового диапазона.

а) 010101 - 001010 б) -010111-011011

Задача 2.4. Рассчитайте в двоичной системе: а) 110101-010101 б) 1101110 : 110

Задача 2.5. Разработайте циклический код Грея с длиной периода 6.

Таблица 2.8. Код ASCII (ч.2).

ASCII

SP

1 ASCII

0

1 ASCII

1 ASCII

Р

1 ASCII

1 ASCII

P

20

1

30

1

40

@

50

60

i

70

21

1

1

^1

1

1

^^ 1 ^^ 1 ^^ 1 ^^'

1

32

1

42

А

1

52

Q

1

62

а

1 72

q

"

22

2

В

R

b

r

23

#

33

3

43

С

53

S

63

с

73

s

24

$

34

4

44

D

54

т

64

d

74

t

25

%

35

5

45

Е

1

55

и 1 65

е

75

u

26

&

36

6

46

F

56

V

1

66

f

76

V

27

?

37

7

47

G

57

м

67

g

77

w

1 28

(

38

8

48

Н

58

X

68

h

78

X

29

)

39

9

49

I

59

Y

69

I

79

у

*

ЗА

J

Z

J

7A

z

+

зв

;

К

[

к

7B

{

?

зс

<

L

\

1

7C

1

2D

-

3D

=

4D

М

5D

]

6D

m

7D

}

/

ЗЕ

>

N

-

n

7E

"

2F

3F

?

4F

о|

5F

6F

о

7F

DEL