Главная страница

Лекции по ВМСС. Конспект лекций по курсу "Электронные вычислительные машины, системы и сети"


Скачать 3.89 Mb.
НазваниеКонспект лекций по курсу "Электронные вычислительные машины, системы и сети"
Дата14.02.2022
Размер3.89 Mb.
Формат файлаdoc
Имя файлаЛекции по ВМСС.doc
ТипКонспект
#361333
страница10 из 24
1   ...   6   7   8   9   10   11   12   13   ...   24


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

0000 0100 (обозначает +4)

1000 0100 (обозначает -4)

0111 1111 (обозначает +127)

1111 1111 (обозначает -127)

У такого представления, называемого прямым кодом, имеется один серьезный недостаток: для него потребуются специальные арифметические правила. Покажем это на примере использования двоичной арифметики для вычитания +1 из 0 с ожидаемым получением -1:

-0000 0000 (0 в прямом коде)

0000 0001 (+1 в прямом коде)

1111 1111 (-127 в прямом коде)

При использовании для знаковых чисел (как и для беззнаковых) обычной двоичной арифметики требуется особое представление знаковых чисел, в котором 11111111 представляет -1, а не -127. Кроме того, вычита­ние +1 из -1 должно давать -2. Выполним это вычитание, чтобы посмо­треть, как должно выглядеть -2:

11111111 (это -1)

00000001 (вычитаем +1)

11111110 (и называем это -2)

Рассмотренное представление называется дополнительным кодом; в этом коде операции сложения и вычитания дают правильный результат в дополнительном коде, например:

+00000011 (+3 в дополнительном коде)

11111110 (-2 в дополнительном коде)

0000 0001 (+1 в дополнительном коде)

В дополнительном коде старший бит неотрицательного (положительно­го или нулевого) числа содержит 0, а отрицательного числа -1. Следова­тельно, как и в прямом коде, этот бит является знаковым.

Знак числа в дополнительном коде можно изменить, если изменить (инвертировать) значение каждого бита и прибавить +1. Например, мы можем получить представление -5 в дополнительном коде из представле­ния +5 в дополнительном коде следующим образом:

+00000101 (+5 в дополнительном коде)

11111010 (+5 с измененными битами)

0000 0001 (+1 в дополнительном коде)

11111011 (- 5 в дополнительном коде)

Необходимо очень осторожно подходить к увеличению длины чисел,

представленных в дополнительном коде. Бели 8-битное число в дополнительном коде расширяется до 16 бит (например, для сложения с 16-битным числом в дополнительном коде), нужно подумать, что же поместить в левые 8 бит.

Предположим, что мы хотим прибавить число 0000 0001 (+1 в дополни­тельном коде) к 0000 0000 0000 0011 (+3 в дополнительном коде). Навер­ное, ни у кого не возникает сомнений в том, что здесь следует просто добавить в числе +1 восемь нулей с левой стороны, а затем сложить:

+0000 0000 0000 0011 (+3 в дополнительном коде)

0000 0000 0000 0001 (+1 в дополнительном коде)

0000 0000 0000 0100 (+4 в дополнительном коде)

Однако при необходимости прибавить число 1111 1111 (-1 в дополни­тельном коде) к числу 0000 0000 0000 0011 (+3 в дополнительном коде) следует добавить к числу -1 слева восемь единиц (добавление нулей превратило бы -1 в положительное число). После этого производится сложение:

+0000 0000 0000 0011 (+3 в дополнительном коде)

1111 1111 1111 1111 (-1 в дополнительном коде)

0000 0000 0000 0010 (+2 в дополнительном коде)

Следовательно, расширение 8-битного числа в 16-битное выглядит так:

Значение


8-битное представление

16-битное представление

+1

0000 0001

0000 0000 0000 0001

-1

1111 1111

1111 1111 1111 1111
1   ...   6   7   8   9   10   11   12   13   ...   24


написать администратору сайта