Прямые, обратные и дополнительные коды чисел с фиксированной запятой
ЭВМ выполняет арифметические операции над числами с фиксированной запятой в машинных кодах. Простейшим машинным кодом является прямой код.
Прямой код числа Х аналогичен двоичному коду, но число его разрядов строго определено и положение двоичной точки в самом коде никак не указано.
Прямые коды чисел просты, но плохо приспособлены для выполнения операций алгебраического сложения и вычитания чисел. Проще и быстрее выполняются операции алгебраического суммирования, вычитания и деления в дополнительных или обратных кодах.
Дополнительный код двоичного числа Х, представленного в n-разрядной сетке, определяется как
где Хгр – величина, равная весу разряда, следующего за старшим разрядом используемой разрядной сетки. Для правильных дробей Хгр=2, для целых чисел Хгр=2n.
Таким образом, дополнительный код положительного числа совпадает с прямым кодом, а дополнительный код отрицательного числа получается как дополнение до граничного числа.
Обратный код двоичного числа Х, представленного в n-разрядной сетке, определяется как
где Хmax – величина наибольшего числа без знака, размещающегося в n‑разрядной сетке. Для правильных дробей Хmax=2–2–n+1, для целых чисел Хmax=2n–1.
Граничное значение Хгротличается от максимального значения Хmaxна одну единицу младшего разряда (мл. р.):
Хгр = Хmax +1 мл. р.
Для положительных чисел прямой, обратный и дополнительный коды совпадают.
В случае отрицательных чисел дополнительный и обратный коды связаны между собой соотношением:
Хдоп = Хобр +1 мл. р.
Правило представления двоичного числа в обратном коде:
1) представить двоичное число в прямом коде в n-разрядном формате. Если число положительное, то его прямой и обратный коды совпадают и больше никаких преобразований делать не надо;
2) если число отрицательное, то в старшем (знаковом) разряде надо оставить 1, а в цифровых разрядах все цифры изменить на инверсные, то есть вместо 0 записать 1 и вместо 1 записать 0.
Правило представления двоичного числа в дополнительном коде:
1) представить двоичное число в прямом коде в n-разрядном формате. Если число положительное, то на этом представление числа и заканчивается, так как прямой, обратный и дополнительный коды в этом случае совпадают;
2) если число отрицательное, то перейти от его прямого кода к обратному;
3) прибавить к обратному коду отрицательного числа единицу младшего разряда.
Правило преобразования дополнительного кода в прямой код:
1) если в старшем (знаковом) разряде стоит 0, то число положительное и прямой код совпадает с дополнительным;
2) если в старшем разряде стоит 1, то число отрицательное, поэтому из дополнительного кода числа надо вычесть 1 младшего разряда с целью получения обратного кода числа, затем заменить все 0 на 1 и 1 на 0 в цифровых разрядах обратного кода, а в знаковом разряде оставить 1.
Прямой код из дополнительного кода отрицательного числа можно получить и по-другому: в знаковом разряде оставить 1, все цифровые разряды инвертировать и к полученному промежуточному результату прибавить единицу младшего разряда. Дополнительные и обратные коды чисел с фиксированной запятой (точкой) упрощают и ускоряют выполнение арифметических операций в ЭВМ.
Пример 1. Представить в 8-разрядном формате прямые, обратные и дополнительные коды целых двоичных чисел: Х1 = 1011; Х2 = –1011; Х3 = 11 0110; Х4 = –11 0110. Найти десятичные эквиваленты заданных чисел.
Решение
Х1 = 1011(2) = 0000 1011(пр)(обр)(доп) = 11(10);
Х2 = –1011(2) = 1000 1011(пр) = 1111 0100(обр) = 1111 0101(доп) = –11(10);
Х3 = 11 0110(2) = 0011 0110(пр)(обр)(доп) = 54(10);
Х4 = –11 0110(2) = 1011 0110(пр) = 11001001(обр) = 11001010(доп) = –54(10).
Пример 2. Представить в 8-разрядном формате прямые, обратные и дополнительные коды дробных двоичных чисел, найти их десятичные эквиваленты: Х1 = –0,11; Х2 = –0,1101; Х3 = 0,0101; Х4 = 0,10101.
Решение
Х1 = –0,11(2) = 11100000(пр) = 10011111(обр) = 10100000(доп) = – (0,5+0,25) = =–0,75;
Х2 = –0,1101(2) =11101000(пр) = 10010111(обр) = 10011000(доп) =
=–(0,5+0,25+0,0625) = –0,8125;
Х3 = 0,0101(2) = 00101000(пр)(обр)(доп) = 0,3125(10);
Х4 = 0,10101(2) =01010100(пр)(обр)(доп) = 0,65625(10).
Пример 3. Числа представлены как целые в дополнительных кодах: Х1 =10111101(доп); Х2 = 00101010(доп). Найти десятичные эквиваленты.
Решение
Необходимо найти прямые коды чисел, после чего перевести их в десятичные числа.
Число Х1 отрицательное, следовательно, необходимо перевести его из дополнительного кода в обратный вычитанием одной единицы младшего разряда, затем в прямой код инверсией всех цифровых разрядов и далее в отрицательное двоичное число.
Х1 =10111101(доп) = 10111100(обр) = 11000011(пр) = –1000011(2) = –67(10).
Число Х2 положительное, следовательно, его прямой код совпадает с дополнительным кодом:
Х2 = 00101010(доп) = 101010(пр) = 2+8+32 = 42(10).
Дата добавления: 2015-08-08; просмотров: 3417;