Скачиваний:
78
Добавлен:
13.01.2023
Размер:
5.52 Mб
Скачать

Прямой код

Двоичное число, состоящее из N битов и записанное в прямом коде, использует наиболее значимый бит для знака, а остальные N−1 бита для записи абсолютного значения этого числа. Если наиболее значимый бит 0, то число положительное. Если наиболее значимый бит 1, то число отрицательное.

Стандартный способ сложения не работает в случае двоичных чисел со знаком, записанных в прямом коде. Например, складывая –510 + 510 привычным способом, получаем 11012 + 01012 = 100102, что неверно. Двоичная переменная длиной N бит в прямом коде может представлять число в диапазоне [–2N–1 + 1, 2N–1 – 1]

Дополнительный код: Наиболее значимый разряд – знаковый, у всех положительных чисел – это «0», у отрицательных чисел – это «1». Остальные биты дополнительного кода отрицательного числа интерпретируются не так, как биты прямого кода. Все биты числа инвертируются а затем к значению наименее значимого бита прибавляется единица. 1/0 (инвертированный модуль +1)

Сложение производится как обычное, но перед этим знаковые числа переводится в дополнительный код. –210 + 110 = 11102 + 00012 = 11112 = –110

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

Произвольное N-битное число, записанное в дополнительном коде, может принимать одно из 2N возможных значений. Но весь этот диапазон разделен между положительным и отрицательным числами.

Охватывает [–2N–1, 2N–1 – 1]

В случае дополнительного кода сложение двух положительных или отрицательных N-битовых чисел может привести к переполнению, если результат будет больше, чем 2N–1 – 1, или меньше, чем –2N–1. Сложение положительного и отрицательного чисел, напротив, никогда не приводит

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

  1. Знаковое расширение.

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

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

Например, числа 3 и –3 записываются в 4-битном дополнительном коде как 0011 и 1101 соответственно. Если мы увеличиваем число разрядов до семи бит, мы должны скопировать знаковый бит в три наиболее значимых бита модифицированного числа, что дает 0000011 и 1111101.

Если дополнять нулями, то в случае отрицательных чисел будет ошибка. Например -510 = 10112 , 000010112 = 1110

  1. Одноразрядный сумматор. Сумматор с последовательным переносом.

Полусумматор.

Вначале спроектируем одноразрядный полусумматор (half adder). Как показано на Рис. 5.1, полусумматор имеет два входа (А и В) и два выхода (S и Cout). S – это сумма А и В. Если и А, и В равны 1, то выход S должен стать равным 2, такое число не может быть представлено в виде одного двоичного разряда. В этом случае результат указывается вместе с переносом Сout в следующий разряд. Полусумматор может быть построен из элементов XOR («исключающее ИЛИ») и AND («логическое И»).

В многоразрядном сумматоре выход Сout подсоединяется ко входу переноса следующего разряда. Например, на Рис. 5.2 бит переноса показан синим цветом, он является выходом Сout одноразрядного сумматора 1-го разряда и входом Cin сумматора следующего разряда. Однако в полусумматоре нет входа переноса Cin для связи с выходом Cout предыдущего разряда.

Как показано на Рис. 5.3, полный сумматор (full adder), имеет вход переноса Cin,. На рисунке также приведены уравнения для S и Cout.

N-разрядный сумматор складывает 2 N-разрядных числа (А и В), а также входной перенос Сin и формирует N-разрядный результат S и выходной перенос Cout. Такой сумматор называется сумматором с распространяющимся переносом (carry propagate adder, CPA), так как выходной перенос одного разряда переходит в следующий разряд. Условное обозначение такого сумматора показано на Рис. 5.4. Оно аналогично обозначению полного сумматора за исключением того, что входы/выходы А, В, S являются шинами, а не отдельными разрядами.

Соседние файлы в предмете Основы проектирования электронных средств на ПЛИС