Дополнительный код не требует коррекции сложения, это означает, что сложение чисел в дополнительном коде согласно обыкновенному правилу двоичного сложения дает результат в дополнительном коде. Вычитание заменяется сложением с отрицательным числом в дополнительном коде.
Пример
Выполнить сложение и вычитание в дополнительном коде разрядности п = 8: а) 18(10) + 7(10); б) 35(10)−7(10)в) 18(10)−35(10)г) −35(10)−18(10)
а) Число 18(10)= 10010(2), при разрядности n = 8, представляется дополнительным кодом 00010010. Число 7(10)=111(2), представляется дополнительным кодом 00000111. Выполняя двоичное сложение кодов, получим дополнительный код результата 00011001. Прочитаем результат: 11001(2)= 25 (10).
б) Число 35(10)=100011(2) представляется дополнительным кодом 00100011, число −7(10)= −111(2) представляется дополнительным кодом 11111001. Выполняя двоичное сложение кодов, получим результат 00011100, в дополнительном коде. Перенос из знакового бита не учитывается. Результат положительный. Дополнительный код совпадает с прямым. Прочитаем результат: 11100(2)= 28(10).
в) Число 18(10)= 10010(2)представляется дополнительным кодом 00010010, число 35(10)=100011(2) - кодом 00100011, а противоположное ему −35(10) − кодом 11011101. Результат сложения: 11101111, противоположное число имеет код: 00010001. Читаем противоположное: 10001(2)= 17(10); а результат − 17(10).
г) Дополнительный код −35(10): 11011101. Дополнительный код −18(10): 11101110. Результат сложения: 11001011, код обратного числа: 00110101. Обратное число: 110101(2) = 53(10),а результат − 53(10).
Кодирование числа с плавающей запятой
Рассмотренные ранее кодовые представления являлись простыми. Существуют и сложные кодовые представления, предназначенные для специального хранения чисел особого вида. Для сложного представления характерно разбиение кодовой комбинации на группы, внутри которых действуют правила простого представления.
Рациональное представление предназначено для записи в память ЭВМ чисел, заданных простой дробью, числитель и знаменатель хранятся отдельно в целочисленном представлении.
Примеры
1. Представить число −1,2(10) в рациональном представлении: 1−4 биты - числитель (в дополнительном коде, целое), 5−8 биты − знаменатель (без знака, целое).
Представим число в виде простой неправильной дроби и переведем его в двоичную форму записи:
Числитель −110(2) в дополнительном коде разрядности n = 4 запишется комбинацией 1010, знаменатель 101(2) – комбинацией 0101. Кодовая комбинация рационального представления имеет вид: 10100101.
Ответ: 10100101.
2. Прочитать число, записанное в рациональном представлении: 1−4 биты - числитель (в дополнительном коде, целое), 5−8 биты − знаменатель (без знака, целое), кодом 10011010.
Прочитав дополнительный код целого числителя 1001, получим: −111(2). Код целого знаменателя 1010 при чтении дает число: 1010(2).
Ответ: -0,7(10) .
Представление числа с плавающей запятой применяется для расширения диапазона представимых чисел. Представление с плавающей запятой построено на основе показательной формы записи двоичного числа А:
где m - мантисса числа, являющаяся числом с фиксированной запятой со знаком, удовлетворяющим условию нормировки.
r - порядок, являющийся целым числом со знаком. Условие нормировки делает соответствие естественной и показательной форм записи числа однозначным. Мантисса m несет информацию о разрядах числа, а порядок r − о положении запятой в записи числа
Описание формата числа с плавающей запятой должно содержать описания хранения мантиссы и порядка внутри кодовой комбинации.
Примеры
1. Представить число с плавающей запятой: 1−11 биты − мантисса со знаком (в дополнительном коде, с фиксированной запятой, нормированная), 12−16 биты − порядок со знаком (целое в дополнительном коде), а) 1101,1101(2); б) 0,00011101(2); в) −11111110111(2); г) −0,0(0111)(2).
Описанное в условии задачи представление с плавающей запятой порождает кодовые комбинации разрядности n = 16, при этом в старших разрядах располагается мантисса с собственной разрядностью nm = 11, а в младших разрядах − порядок с разрядностью nr = 5.
На первом этапе выполняют переход от естественной формы записи числа к показательной. Условие нормировки означает, что запятую в записи числа следует перенести так, чтобы получить 0 в разряде целых и 1 в старшем разряде дробной части. Перемещение запятой компенсируют подбором порядка. Мантисса в данном формате хранит 10 разрядов числа; если в записи нормированной мантиссы их больше, необходимо выполнить округление. Округление выполняется путем устранения разрядов с наименьшим весом.
На втором этапе, после записи числа в показательной форме, с мантиссой и порядком работают раздельно. Готовые коды мантиссы и порядка объединяют. Длинные комбинации кода, для облегчения практической работы с ними, разбивают на триады или тетрады.
a) | m: | ПК=ДК | |||||||
r: | ПК=ДК | ||||||||
б) | m: | ПК=ДК | |||||||
r: | ПК | ||||||||
ОК | |||||||||
ДК | |||||||||
в) | m: | ПК | |||||||
ОК | |||||||||
ДК | |||||||||
r: | ПК | ||||||||
г) | m: | ПК | |||||||
ОК | |||||||||
ДК | |||||||||
r: | ПК | ||||||||
ОК | |||||||||
ДК |
Рис 4.
а) Представим число в показательной форме:
.
Для выполнения условия нормировки потребовалось сместить запятую в записи числа влево на 4 разряда, что и отражено в порядке показательной формы. Мантисса m и порядок r записанные, в дополнительном коде представлены на рис. 4, а.
Ответ: 0110 1110 1000 0100.
б) Представим число в показательной форме:
Для выполнения условия нормировки потребовалось сместить запятую в записи числа вправо на 3 разряда, что отражено в порядке r. Мантисса m и порядок r записанные в дополнительном коде представлены на рис. 4, б. Порядок r < 0, поэтому требуется перевод из прямого кода в дополнительный.
Ответ: 0111 0100 0001 1101.
в) Показательная форма заданного числа имеет вид:
Выполнение условия нормировки требует сместить запятую в записи числа влево на 11 разрядов. В мантиссе оказалось 11 разрядов. Округление выполнено в младшем разряде, при чтении этот разряд будет нулевым. Перевод мантиссы m и порядка r в дополнительный код представлен на рис. 4, в.
Ответ: 1000 0000 1010 1011.
г) Округлим число так, чтобы осталось 10 разрядов, которые можно записать в мантиссу, затем представим округленное число в показательной форме:
Выполнение условия нормировки требует сместить запятую в записи числа вправо на 2 разряда. Перевод мантиссы т и порядка r в дополнительный код представлен на рис. 4, г.
Ответ: 1000 1000 1011 1110.
2. Для формата, описанного в предыдущем примере, прочитать число с плавающей запятой а) 0111 0101 0000 0110; б) 1000 1010 0001 0101.
Для решения обратной задачи разбивают кодовую комбинацию на группы бит, принадлежащих мантиссе и порядку, и выполняют их чтение. Получив числовое значение мантиссы и порядка, записывают число вначале в показательной форме, затем в естественной форме.
а) | m: | ДК=ПК | ||||||
r: | ДК=ПК | |||||||
б) | m: | ДК | ||||||
−ПК | ||||||||
r: | ДК | |||||||
−ПК |
Рис 5.
а) Разбиение кода на группы, соответствующие мантиссе и порядку и подготовка к чтению этих групп представлены на рис.5, а. Показательная и естественная формы числа имеют вид:
Ответ: 111010,1(2).
б) Разбиение кода на группы и подготовка к их чтению представлены на рис. 5, б. Показательная и естественная формы числа имеют вид:
Ответ: -0,000000111011(2).