КОДЫ ДВОИЧНЫХ ЧИСЕЛ


 

  1. Разрядная сетка

Все данные в центральной части ЭВМ хранятся и обрабатываются в виде двоичных кодов. Для размещения кода отводится строго фиксированное число двоичных разрядов, образующих разрядную сетку. Без привязки к разрядной сетке понятие кода не определено. Каждый разряд кода нумеруется, начиная с нуля. В разных ЭВМ принята разная система нумерации. В универсальных ЭВМ разряды нумеруются слева направо, а в мини и микро-ЭВМ – справа налево. Пример нумерации для n двоичных разрядов приведен ниже.

 

Номера ß разрядов ß a0 a1 a2 an-2 an-1 Универсальные ЭВМ
2n-1 2n-2 2n-3 ….. 21 20 Вес разрядов
an-1 an-2 a2 a1 a0 Мини и микро-ЭВМ

 

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

Наиболее просто кодируются целые числа без знака. В этом случае в разрядную сетку записывается двоичное представление числа. Каждая цифра числа занимает разряд в соответствии со своим весом.

Для кодирования целых чисел со знаком применяют:

· Прямой код.

· Обратный код.

· Дополнительный код.

Прямой код

Прямой n-разрядный двоичный код состоит из знакового разряда и

n-1 разрядов для записи модуля числа. В качестве знакового разряда используется старший разряд.

 

an-1 an-2 ... a0

 

Знак “плюс” кодируется как 0, а знак “минус” – как 1.

Определим диапазон чисел, представимых в прямом n-разрядном двоичном коде. Введем следующие обозначения: A+max – максимальное положительное число, A-min - минимальное отрицательное число:

A+max = 2n-1 – 1; A-min = -(2n-1-1)

Пример: Получить прямой 5-ти разрядный код числа A[10] = -6.Определить диапазон чисел для этой разрядной сетки.

 

1.| A[10] | = 6 Þ | A[2] | = 0110 (на запись модуля выделено 4 разряда)

2.Знаковый разряд = 1

10 1 1 0
3.(А[2])пр =

 

Определим диапазон чисел:

A+max = 24 – 1 = 15 A-max = -(24 – 1) = -15

 

Пример: Получить прямой 8-ми разрядный код числа A[16] = 3С. Определить диапазон чисел для этой разрядной сетки.

1.| A[16] | = 3С Þ | A[2] | = 0111100 (на запись модуля выделено 7 разрядов)

2.Знаковый разряд = 0

00 1 1 1 1 0 0
3.(А[2])пр =

 

Определим диапазон чисел:

A+max = 27 – 1 = 127 A-max = -(27 – 1) = -127

 

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

Недостатки:

1. Сложение и вычитание чисел в прямом коде выполняется по правилам алгебры:

(С)пр = (А)пр + (В)пр

(С)пр = (А)пр - (В)пр ,

поэтому процессор должен иметь два разных устройства: сумматор и вычитатель.

2. Знаковый разряд обрабатывается отдельно от остальных по особым правилам.

3. Неоднозначность кодировки нуля:

0 0 0 0 0
+0 при n=5

1 0 0 0 0
-0 при n=5

 

Обратный код

Обратный код предполагает, что при кодировании числа и выполнении операций с кодами используются одинаковые правила обработки всех разрядов, включая знаковый. Обратный n-разрядный двоичный код – это код образованный по правилу:

 
 

Операция вида (2n – 1) - |A2| дает дополнение до наибольшего числа без знака, представимого в в n-разрядной сетке. Другими словами, кодирование числа можно выполнить следующим образом:

· Для положительного числа в n-разрядную сетку записывается его двоичное представление.

· Для отрицательного числа в n-разрядную сетку записывается разность между наибольшим числом без знака и модулем кодируемого числа.

В обоих случаях значение знакового разряда будет получено автоматически.

Кодируем отрицательное число 1. |В[10]| = 6 2. |В[2]| = 00110 3. (В[2])обр= 1 1 1 1 1 Это инверсия модуля - 0 0 1 1 0 1 1 0 0 1 (В[2])обр= Знак ® 1
Пример: Получить обратные коды чисел А[10] = 4, В[10] = -6 для n = 5.

 
 

Замечания:

v Операция дополнения для двоичного обратного кода эквивалентна инверсии всех разрядов. Инверсия удобна для реализации в операционном устройстве.

v Если длина разрядной сетки кратна 4, дополнение удобно вычислять в шестнадцатеричной системе счисления. Такая разрядная сетка характерна для большинства ЭВМ.

v Если длина разрядной сетки кратна 3, дополнение удобно вычислять в восьмеричной системе счисления. Такая разрядная сетка не характерна для ЭВМ. Однако для мини-ЭВМ с 16-ти разрядной сеткой при документировании программ часто пользуются восьмеричной записью кодов чисел, при этом старший разряд рассматривается как двоичная цифра.

Пример: Определить обратный код числа А[10] = -21 при n=16.

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

v Двоичное кодирование.

1. |А[10]| = 21

2. |А[2]| = 10101

3. |А[2]| = 0000 0000 0001 0101 (Это модуль кодируемого числа в разрядной сетке)

4. (А[2])обр= 1111 1111 1110 1010

F F E A[16]

v Шестнадцатеричное кодирование

1. | А[10]| = 21

[16]| = 15

2. (А[16])обр =F F F F (Это максимальное число без знака)

- 0 0 1 5(Это модуль кодируемого числа в разрядной сетке)

F F E A

v Восьмеричное кодирование

1. | А[10]| = 21

[8]| = 25

2. (А[8])обр =1 7 7 7 7 7(Это максимальное число без знака)

- 0 0 0 0 2 5(Это модуль кодируемого числа в разрядной сетке)

1 7 7 7 5 2

 

Диапазон чисел в обратном коде составляет: A+max = 2n-1 – 1; A-min = -(2n-1-1)

Достоинства:

1 Сложение и вычитание можно выполнять на одном устройстве: сумматоре, поскольку вычитание может быть заменено сложением с дополнением вычитаемого:

(С)обр = (А)обр + (В)обр

(С)обр = (А)обр - (В)обр = (А)обр + ((В)обр)обр

2 Знаковый разряд обрабатывается по общим правилам. Его значение при выполнении операции устанавливается автоматически.

Недостатки:

Неоднозначность кодировки нуля:

0 0 0 0 0
+0 при n=5

1 1 1 1 1
-0 при n=5

Чаще всего в ЭВМ используется модификация обратного кода – дополнительный код.

 

Дополнительный код

 
 

Дополнительный код обладает всеми достоинствами обратного и устраняет его главный недостаток – неоднозначность кодирования нуля. Дополнительный n-разрядный двоичный код представляет собой код, образованный по правилу:

Операция 2n – |A2| называется операцией дополнения до следующего за большим числом без знака для данной разрядной сетки. Другими словами, кодирование числа можно выполнить следующим образом:

· Для положительного числа в n-разрядную сетку занести его двоичное представление.

· Для отрицательного числа в n-разрядную сетку занести разность между следующим

за большим числом без знака и модулем кодируемого числа.

Дополнение при использовании дополнительного кода больше по значению на 1 от дополнения при использовании обратного кода:

( 2n – 1 ) - |A2| + 1 = 2n - |A2|

 
 

Cледствие: дополнительный код отрицательного числа может быть получен из его обратного кода путем прибавления единицы в младший разряд.

Пример: Определить дополнительный код числа А[16] = -1D8 при n=16.

Кодируется отрицательное число, следовательно, необходимо вычислить дополнение и использовать его в качестве кода.

v Двоичное кодирование.

1. |А[16]| = 1D8

2. |А[2]| = 111011000

3. |А[2]| = 0000 0001 1101 1000 (Это модуль кодируемого числа в разрядной сетке)

4. (А[2])обр= 1111 1110 0010 0111 (Это обратный код)

+ 1

[2])доп= 1111 1110 0010 1000 (Это дополнительный код)

F E 2 8[16]

v Шестнадцатеричное кодирование

1. | А[16]| = 1D8

2. (А[16])обр F F F F (Это максимальное число без знака)

- 0 1 D 8(Это модуль кодируемого числа в разрядной сетке)

F E 2 7 (Это обратный код)

+ 1

[16])доп= F E 2 8 (Это дополнительный код)

v Восьмеричное кодирование

1. | А[8]| = 730

2. (А[8])обр =1 7 7 7 7 7(Это максимальное число без знака)

- 0 0 0 7 3 0(Это модуль кодируемого числа в разрядной сетке)

1 7 7 0 4 7 (Это обратный код)

+ 1

[8])доп= 1 7 7 0 5 0 (Это дополнительный код)

 

Дополнительный код обеспечивает однозначное представление нуля:

+0 при n=5

-0 при n=5

+ 1

 

Диапазон представимых чисел в дополнительном коде: A+max = 2n-1 – 1; A-min = -2n-1



Дата добавления: 2019-02-08; просмотров: 1773;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.022 сек.