Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вычислительные системы-введение.doc
Скачиваний:
7
Добавлен:
14.09.2019
Размер:
453.63 Кб
Скачать

Сложение чисел в двоичном дополнительном коде

Чтобы сложить числа, представленные в двоичном дополнительном коде, сле­дует использовать тот же алгоритм, что и для сложения обычных двоичных чи­сел. Однако нужно учесть тот факт, что в этом коде все представляемые числа, включая и искомый результат, имеют одинаковую длину. Это означает, что, при суммировании представленных в этом коде чисел, любой бит переноса, появ­ляющийся на левом конце результирующего значения при сложении самых старших разрядов, должен отбрасываться. Например, при суммировании бито­вых комбинаций 0101 и 0010 будет получен результат 0111, а при сложении комбинаций 0111 и 1011 — результат 0010 (0111 + 1011 = 10010, после чего результат усекается до 0010).

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

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

Рис. 1.21 Сложение чисел в двоичном дополнительном коде

В отличие от учеников начальной школы, которые должны вначале освоить опе­рацию сложения, а затем операцию вычитания, машины, в которых используется двоичный дополнительный код, должны уметь только суммировать числа и изме­нять знак числа на обратный. Например, операция вычитания 7-5 аналогична операции сложения 7 + (-5). Если машине потребуется вычесть число 5 (представленное битовой комбинацией 0101) из числа 7 (представленного битовой комбинацией 0111), то она сначала поменяет знак числа 5 на -5 (представляемое как битовая комбинация 1011), а затем выполнит операцию сложения для значений 0111 и 1011. В результате будет получено значение 0010, представляющее десятич­ное число 2. Все это будет выглядеть следующим образом:

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

Двоичная нотация с избытком

Теперь давайте рассмотрим двоичную нотацию с избытком, которая является еще одним способом представления целых чисел. Каждое число в этой нотации представлено битовой комбинацией одной и той же длины. Чтобы сформировать представление числа в двоичной нотации с избытком, сначала выбирается длина битовой комбинации, а затем в порядке счета в обычной двоичной системе последовательно записываются все возможные битовые комбинации, имеющие установленную длину. При анализе полученного результата можно заметить, что первая битовая комбинация с единицей в старшем разряде находится почти в середине списка. Именно она выбирается в этой нотации для представления чис­ла 0. Все последующие комбинации с единицей в старшем разряде будут пред­ставлять числа 1, 2, 3,... соответственно. Предыдущие комбинации в обрат­ном направлении используются для представления чисел -1, -2, -3,... . Кодо­вые значения, получаемые при использовании четырехразрядных битовых комбинаций, показаны на рис. 1.22. В частности, число 5 представлено комби­нацией 1101, а число -5 представлено комбинацией 0011. (Обратите внимание, что различие между двоичной нотацией с избытком и двоичным дополнитель­ным кодом состоит только в противоположности значений знаковых битов.)

Рис 1.22

Таблица значений, представленная на рис. 1.22, известна как двоичная нота­ция с избытком восемь. Чтобы понять, почему она так называется, сначала оп­ределим значения кодовых комбинаций как обычных двоичных значений, а за­тем сравним полученный результат с тем значением, которое присвоено каждой кодовой комбинации в двоичной нотации с избытком восемь. В результате мы обнаружим, что соответствующее кодовой комбинации двоичное число превыша­ет представляемое этой комбинацией значение на 8. Например, комбинация 1100 обычно используется для представления числа 12, а в двоичной нотации с избытком восемь эта же комбинация представляет число 4. Это же справедливо и для комбинации 0000, которая обычно представляет число 0, а в данной нотации — число -8. Если же двоичная нотация с избытком создается для комбина­ций длиной пять битов, она будет называться двоичной нотацией с избытком 16. В этом случае комбинация 10000 будет представлять число 0, а не 16, как в обычной двоичной системе. Этот же принцип может быть использован для име­нования любой конкретной схемы двоичной нотации с избытком. Например, схему с тремя двоичными разрядами, представленную на рис. 1.23, можно на­звать двоичной нотацией с избытком четыре.

Рис 1.23

Представление дробных значений

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

Двоичная нотация с плавающей точкой

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

Для начала давайте условимся считать старший бит знаковым. Как и в предыду­щих примерах, значение нуль в знаковом бите означает, что представляемое число неотрицательно, а значение единица, наоборот, указывает, что число является отри­цательным. Далее разделим оставшиеся биты байта на две группы, или поля, а именно: поле порядка числа и поле мантиссы. Следующие три бита после знакового бита будем считать полем порядка числа, а оставшиеся четыре бита — полем ман­тиссы. Описанный выше способ разделения байта представлен на рис. 1.24.

Рис 1.24

Попробуем разобраться с назначением отдельных полей на конкретном примере. Пусть байт содержит битовую комбинацию 01101011. При разложении этой комби­нации по элементам описанного выше формата оказывается, что знаковый бит ра­вен 0, поле порядка числа имеет значение 110, а поле мантиссы — значение 1011. Для расшифровки представленного в этом байте значения, прежде всего, выделим мантиссу и поместим плавающую точку слева от нее, как показано ниже:

.1011

Далее выделим значение в поле порядка числа (110) и интерпретируем его как целое трехразрядное число, записанное в двоичной нотации с избытком (см. рис. 1.20). Таким образом, в поле порядка числа закодировано целое число 2. Это означает, что плавающую точку в полученном ранее значении следует пере­местить на два бита вправо (при отрицательном порядке плавающая точка пере­мещается влево), после чего будет получен окончательный результат:

10.11

Это значение является двоичным представлением числа 2 3/4. Наконец, определя­ем, что представляемое число является положительным, поскольку знаковый бит имеет значение 0. Таким образом, мы установили, что битовая комбинация 01101011 в двоичной нотации с плавающей точкой представляет число 2 3/4.

Рассмотрим еще один пример, в котором байт содержит битовую комбинацию 10111100. Выделив мантиссу, получим следующее значение:

.1100

Теперь перенесем плавающую точку на один бит влево, так как в поле поряд­ка содержится значение 011, представляющее число -1. Поэтому окончательный вид закодированного двоичного числа будет следующим:

0.01100

Это двоичное число имеет значение 3/8. Закодированное в значении байта число является отрицательным, поскольку его знаковый бит равен 1. Из этого следует, что битовая комбинация 10111100 в двоичной нотации с плавающей точкой представляет число -3/8.

Для представления чисел в двоичной нотации с плавающей точкой необходи­мо следовать описанному выше процессу, но уже в обратном порядке. Например, для определения представления в этой нотации числа 1 1/8 сначала необходимо записать его двоичное представление: 1.001. Затем эта битовая комбинация ко­пируется в поле мантиссы слева направо, начиная с самой левой единицы в дво­ичном представлении числа. Это будет выглядеть так:

_ _ _ _ 1 0 0 1

Теперь остается заполнить поле порядка числа. Представим содержимое поля мантиссы, слева от которого расположена плавающая точка, и определим число разрядов, а также направление, в котором будет перемещаться плавающая точка для получения исходного значения двоичного числа. Обратившись к нашему примеру, можно увидеть, что точка в комбинации .1001 должна быть переме­щена на один бит вправо; в результате будет получено исходное значение 1.001. Таким образом, порядок числа равен положительному числу 1, поэтому в соот­ветствующее поле следует поместить значение 101 (представляющее число +1 в двоичной нотации с избытком четыре). Окончательное значение в байте будет выглядеть следующим образом:

0 1 0 1 1 0 0 1

При заполнении поля мантиссы имеется один тонкий момент, на который вы могли не обратить внимание. Правило требует копировать битовую комбинацию двоичного представления числа в поле мантиссы слева направо, начиная с край­ней левой единицы. Чтобы прояснить для себя этот нюанс, рассмотрим процесс кодирования числа 3/8, двоичным представлением которого является битовая комбинация .011. В этом случае мантисса должна иметь следующее значение:

_ _ _ _ 1 1 0 0

Любой другой вариант, например представленный ниже, недопустим:

_ _ _ _ 0 1 1 0

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

ОБРАБОТКА ДАННЫХ

Центральный процессор

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

Регистры

Для временного запоминания информации в ЦП имеются ячейки, называе­мые регистрами, которые похожи на ячейки основной памяти. Их можно разде­лить на регистры общего назначения и специализированные регистры.

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