Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Действия над двоичными числами






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

Таблица 1 - Правила двоичного сложения

Значения двоичных чисел А и В Разряд суммы S i Перенос в следующий разряд Pi
ai bi pi-1
         
         
         
         
         
         
         
         

 

В таблице 1 показаны правила сложения двоичных цифр ai, bi одноименных разрядов с учетом возможных переносов из предыдущего разряда pi-1.

Различают прямой код (ПК), обратный код (ОК) и дополнительный код (ДК) представления двоичных чисел.

Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (ноль или единица) перед его старшим числовым разрядом.

Например,

A (10) = +10 A (2) = +1010 [ A (2)]пк = 0|1010

B ( 10 ) = -15 B (2) = -1111 [ B (2)]пк = 1|1111

Под знак чисел отводится специальный знаковый разряд. Знак " +" кодируется двоичным нулем, а знак минус " -" - единицей. Вертикальной линией здесь отмечена условная граница, отделяющая знаковый разряд от значащих цифр.

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

во-первых, следует отдельно обрабатывать значащие информационные разряды чисел и разряды знака;

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

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

A (10) = +5 A (2) = +101 [ A (2)]пк = [ A (2)]ок = 0|101

B ( 10 ) = -13 B ( 2 ) = -1101 [ B (2)]ок = 1|0010

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

1) сложение положительного числа А с его отрицательным значением в обратном коде дает так называемую машинную единицу обратного кода Меок = 1|111...11, состоящую из единиц в знаковом и значащих разрядах числа;

2) нуль в обратном коде имеет двоякое значение. Он может быть положительным – 0|00...0 и отрицательным числом – 1|11...11. Значение отрицательного нуля совпадает с МЕок.

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

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

A (10) = +19 A (2) = +10011 [ A (2)]пк = [ A (2)]ок = [ A (2)]дк = 0|10011

B (10) = -13 B (2) = -1101 [ B (2)]дк = [ B (2)]ок + 20 = 1|0010+1 = 1|0011

Основное свойство дополнительного кода: сложение дополнительных кодов положительного числа и противоположного ему отрицательного дает так называемую машинную единицу числа дополнительного кода Медк = МЕок+20 =10|00...00, то есть число 10 (два) в знаковых разрядах числа.

Дополнительный код получил такое название потому, что представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы МЕдк.

Операция вычитания двоичных чисел приводится к операции сложения путем преобразования чисел в обратный или дополнительный код. Пусть числа А > 0 и В > 0, тогда операция алгебраического сложения выполняется в соответствии с таблицей 2.

Таблица 2 - Алгебраическое сложение

Требуемая операция Необходимое преобразование
А + В А + В
А - В А + (-В)
-А + В (-А) + В
-А - В (-А) + (-В)

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

Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с таблицей 2. При выполнении сложения чисел необходимо соблюдать следующие правила:

1) слагаемые должны иметь одинаковое число разрядов. Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа. В схемах ЭВМ это делается автоматически;

2) знаковые разряды чисел участвуют в сложении так же, как и значащие, информационные;

3) необходимые преобразования кодов производятся с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу;

4) при образовании единицы переноса из старшего знакового разряда, в случае использования МЕОК, эта единица складывается с младшим числовым разрядом. При использовании МЕДК единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.

Выполним сложение двух чисел A (10) = 7 и B (10) = 16 в двоичной системе счисления.

1 Переведем эти числа в двоичную систему:

A (2) = +111 B (2 ) = +10000

2 Запишем прямые, обратные и дополнительные коды чисел. Исходные числа имеют различную разрядность, поэтому необходимо провести выравнивание разрядной сетки:

[ A (2) ]пк = [ A (2) ]ок = [ A (2)]дк = 0|00111

[ B (2) ]пк = [ B (2) ]ок = [ B (2) ]дк = 0|10000

 

3 Сложение в обратном или дополнительном кодах даст один и тот же результат:

0|00111

+0|10000

С(2) = 0|10111 С (10) = + 23

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

Выполним вычитание чисел A (10) = +16 и B ( 10 ) = 7.

В соответствии с таблицей надо выполнить преобразование А - В = А + (-В).

[ A (2) ]пк = [ A (2) ]ок = [ A (2)]дк = 0|10000

[- B (2) ]пк = 1|111 = 1|00111 [- B (2)]ок=1|11000 [- B ( 2 )]дк=1|11001






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.