Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка1.DOC
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.27 Mб
Скачать

«Предстваление чисел в прямом и дополнительном коде» теоретическая часть

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

Простейшим форматом, который использует знаковый разряд является прямой код.

0

0

0

1

0

0

1

0

=

+18

1

0

0

1

0

0

1

0

=

-18

Знаковый разряд

Как и в прямом, так и дополнительном коде старший разряд в разрядной сетке отводится для представления знака числа. Остальные разряды интерпретируются не так как в прямом коде.

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

Диапазон представления на n-разрядной сетке

от -2n-1 до 2n-1 – 1

Например: для n= 8 от -2-7 до 27 -1

от -128 до 127

Количество кодовых комбинаций, соответствующих числу 0

Одна

Отрицание

1. Инвертировать значение в каждом разряде представления исходного числа, включая знаковый разряд, т.е. установить занчение 1 в тех разрядах, где ранее был 0, а значение 0 – в тех разрядах, где ранее было значение 1. (Эту операцию иногда называют поразрядным дополнением, а ее результат инверсным кодом).

2. Сложить образовавшееся число с числом 0…001 по правилам сложения чисел без знака. Иногда эту операцию называют вычислением дополнения числа в дополнительном коде.

+18 = 00010010 (дополнительный код)

Поразрядное дополнение = 11101101

+ 1

11101110 = -18

Проверим правило, гласящее, что отрицание отрицания равно исходному числу

-18 = 11101110 (дополнительный код)

Поразрядное дополнение = 00010001

+ 1

00010010 = +18

Примечание. Операция отрицания числа представленного в прямом коде выполняется очень просто – нужно инвертировать значение знакового разряда.

Расширение разрядности представления

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

+18 00010010 дополнительный код, 8 разрядов

+18 00000000 00010010 дополнительный код, 16 разрядов

-18 11101110 дополнительный код, 8 разрядов

-18 11111111 11101110 дополнительный код, 16 разрядов

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

+18 00010010 прямой код, 8 разрядов

+18 00000000 00010010 прямой код, 16 разрядов

-18 10010010 прямой код, 8 разрядов

-18 10000000 00010010 прямой код, 16 разрядов

Определение переполнения при сложении

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

Знаковые разряды

0

1

+

+

0

1

1

0

Положительные числа в прямом и дополнительном кодах имеют одинаковое представление.

Таблица 2. Варианты двоичного 4-разрядного представления целых чисел

Десятичное представление

Прямой код

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

+7

0111

0111

+6

0110

0110

+5

0101

0101

+4

0100

0100

+3

0011

0011

+2

0010

0010

+1

0001

0001

+0

0000

0000

-0

1000

-

-1

1001

1111

-2

1010

1110

-3

1011

1101

-4

1100

1100

-5

1101

1011

-6

1110

1010

-7

1111

1001

-8

-

1000

Чтобы получить представление двоичного отрицательно числа в дополнительном коде нужно над модулем числа выполнить операцию отрицания.

Представить число 2710 как восьмиразрядное двоичное положительное и отрицательное число в дополнительном коде.

-27

2

26

-13

2

1

12

-6

2

1

6

-3

2

0

2

1

1

2710 = 110112

В двоичном представлении исходное число имеет 5 значащих цифр. Для восьмиразрядного представления нужно слева добавить три 0.

+27

=

0

0

0

1

1

0

1

1

Операция отрицания

+

1

1

1

0

0

1

0

0

1

-27

1

1

1

0

0

1

0

1

Проверим результат, используя правило - отрицание отрицания равно исходному числу.

-27

1

1

1

0

0

1

0

1

Операция отрицания

+

0

0

0

1

1

0

1

0

1

+27

0

0

0

1

1

0

1

1

Для преобразования между десятичным представление и двоичным представлением отрицательного числа в дополнительном коде можно использовать диаграмму веса разрядов. Рассмотри пример для восьмиразрядных чисел. Для получения кода заданного числа нужно набрать из чисел, соответствующих целой степени 2, положительное число, которое в сумме с числом (-128) даст необходимое число. В графах чисел, входящих в сумму нужно поставить 1, а остальные графы в этой строке заполнить 0.

Таблица 3.

Числа

27

26

25

24

23

22

21

20

Результаты вычислений

-128

64

32

16

8

4

2

1

-123

1

0

0

0

0

1

0

1

-128 + 4 + 1 = -123

-87

1

1

0

1

0

1

1

1

-128 + 64 + 16 + 4 + 1 = -87

-10

1

1

1

1

0

1

1

0

-128 + 64 + 32 + 16 + 4 + 2 = - 10

-27

1

1

1

0

0

1

0

1

-128 + 64 + 32 + 4 + 1 = -27