Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Действия над двоичными числами
Все современные ЭВМ имеют достаточно развитую систему команд, включающую в свой состав десятки и сотни машинных операций. Однако выполнение любой операции основано на использовании простейших микроопераций типа сложение и сдвиг. Это позволяет иметь единое арифметико-логическое устройство для выполнения любых операций, связанных с обработкой информации. Правила сложения двоичных цифр двух чисел А и В представлены в таблице 1. Таблица 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
|