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


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Дополнительный код





Все процессоры с ФТ оперируют с числами, представленными в дополнительном коде, что позволяет существенно упростить выполнение арифметических операций.

Положительные целые числа представляются в дополнительном коде точно так же, как в прямом коде. Формирование дополнительного кода отрицательного числа производится по следующему правилу:

значение знакового бита не меняется (равно 1);

все b значащих битов инвертируются (0 заменяются на 1,а 1 – на 0);

к младшему биту полученного числа прибавляется 1 с соблюдением правил сложения двоичных

чисел.

Результат представляет собой число в дополнительном коде. Правило перевода в дополнительный код не зависит от типа чисел – целые или дробные.

Примеры перевода из прямого кода в дополнительный представлены на рис. 3.8 и 3.9.

 

а ) положительное целое

 

173(10) = + 1101101(2) = 01101101пр = 01101101доп

 

 

7 6 5 4 3 2 1 0

               

 

 

б) отрицательное целое

 

_ 173(10) = _ 1101101(2) = 11101101пр = 10010011доп

формирование дополнительного кода:

инверсия всех битов, кроме знакового: 10010010

добавление 1 к младшему биту: 10010011

 

7 6 5 4 3 2 1 0

               

 

Рис. 3. 8. Примеры целых чисел в дополнительном коде

 

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

Приведем пример. Пусть дано число в дополнительном коде: 10010011доп (жирным шрифтом выделен знаковый бит). Формирование прямого кода:

инверсия всех битов, кроме знакового __> 1 1101100;

добавление 1 к младшему биту _> 1 1101101пр.

Код называется дополнительным, поскольку отрицательное дробное число можно представить как разность между числом 2 (беззнаковым целым) и модулем этого числа, т.е. как дополнение к 2. В качестве примера, получим дополнительный код отрицательного числа __0,875, как его дополнения к 2. Модуль этого числа в формате Q3 равен 0,111(2). Вычитая 0,111(2) из числа 2(10) = 10,000(2) имеем результат 1,001(2). Определим дополнительный код числа _ 0,875 по приведенному выше правилу:

_ 0, 875 _> _ 0,111(2) _> 1 111пр _> инверсия всех битов, кроме знакового _> 1 000 добавление 1 в младшему биту _> 1 001доп. _______

 

Результаты совпадают.

 

а)положительное дробное

0,8828125(10) = +0,1110001(2) = 01110001пр = 01110001доп

 

7 6 5 4 3 2 1 0

 
 


             

 

 

б) отрицательное дробное

 

___ 0,8828125(10) = _ 0,1110001(2) = 11110001пр = 10001111доп

Формирование дополнительного кода:

инверсия всех битов, кроме знакового: 10001110

добавление 1 к младшему биту: 10001111

 

7 6 5 4 3 2 1 0

 
 


             

 

Рис. 3. 9. Примеры дробных чисел в дополнительном коде

 

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

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

Сравнивая рис.3.10 и 3.11, еще раз подчеркнем, что одинаковое представление чисел с ФТ может иметь разную трактовку типа чисел, а следовательно, соответствовать разным числам.

Приводимые правила нетрудно распространить на любой формат.

Наряду с простотой выполнения арифметических операций (см. далее), в дополнительном коде устраняется неоднозначность представления нуля.

Ноль в прямом коде может быть представлен и как 0000...0 и как 1000...0, а в дополнительном коде только как 0000...0. Это легко проверить, вычислив для чисел, представленных в дополнительном коде, их десятичные эквиваленты:

0000... = 0(10);

1000... = _1(10).

 

 

а) веса битов

 

7 6 5 4 3 2 1 0

               

_27 26 25 24 23 22 21 20

 

б) дополнительный код

положительного целого числа

 

7 6 5 4 3 2 1 0

               

 

Десятичный эквивалент

(26 + 24 + 22 + 20) = 83

 

в) дополнительный код

отрицательного целого числа

 

7 6 5 4 3 2 1 0

               

 

 

Десятичный эквивалент

_27 + 25 + 23 + 22 = _ 84

 

Рис. 3.10. Десятичный эквивалент двоичного целого числа в дополнительном коде

а) веса битов

 

7 6 5 4 3 2 1 0

             

_20 2-1 2-2 2-3 2-4 2-5 2-6 2-7

 

 

б) дополнительный код

положительного дробного числа

 

7 6 5 4 3 2 1 0

 
 


             

 

 

Десятичный эквивалент

2-1 + 2-3 + 23-6 + 2-7 = 0,6484375

 

 

в) дополнительный код

отрицательного дробного числа

 

7 6 5 4 3 2 1 0

 
 


             

 

 

Десятичный эквивалент

_20 + 2-2 + 2-4 + 2-5 = _ 0,65625

 

Рис.3. 11. Десятичный эквивалент двоичного дробного числа в дополнительном коде

 

 

На рис. 3.12 приведены примеры максимальных и минимальных по модулю значений для положительного и отрицательного целых чисел в дополнительном коде в формате “слово” длиной 8 битов и их десятичные эквиваленты. Десятичные эквиваленты целых чисел для формата “слово” длины n битов (где n = b+1, b _ количество значащих битов) равны:

 

2b _ 1 _ максимальное положительное;

1 _ минимальное положительное;

_ 2b _ максимальное по модулю отрицательное;

_ 1 _ минимальное по модулю отрицательное.

 

а) максимальное положительное

целое число

7 6 5 4 3 2 1 0

               

 

Десятичный эквивалент

28_ 1 = 127

б) минимальное положительное целое число

 

7 6 5 4 3 2 1 0

               

 

Десятичный эквивалент

20 = 1(10)

 

в) максимальное по модулю

отрицательное целое число

 

7 6 5 4 3 2 1 0

               

 

Десятичный эквивалент

_ 28 = _128

 

г) минимальное по модулю

отрицательное целое число

 

7 6 5 4 3 2 1 0

               

 

Десятичный эквивалент

_ 1(10)

 

Рис. 3. 12. Максимальные и минимальные целые числа в дополнительном коде

 

 

На рис. 3.13 приведены примеры максимальных и минимальных значений для положительного и отрицательного дробных чисел в дополнительном коде в формате Q7 и их десятичные эквиваленты. Десятичные эквиваленты дробных чисел в формате Qb длины равны:

 

1 _ 2 b _ максимальное положительное;

2 b _ минимальное положительное;

_ 1 _ максимальное по модулю отрицательное;

_ 2 b _ минимальное по модулю отрицательное.

 

 

а) максимальное положительное

дробное число

 

7 6 5 4 3 2 1 0

 
 


             

 

Десятичный эквивалент

1 _ 2 –8 = 0,9921875

 

б) минимальное положительное

дробное число

 

7 6 5 4 3 2 1 0

 
 


             

 

Десятичный эквивалент

2–8 = 0,0078125

в) максимальное по модулю

отрицательное дробное число

 

 

7 6 5 4 3 2 1 0

 
 


             

 

Десятичный эквивалент

_ 1(10)

 

г) минимальное по модулю

отрицательное дробное число

 

7 6 5 4 3 2 1 0

 
 


             

 

Десятичный эквивалент

_ 2 –8 = _ 0,0078125

 

Рис. 3. 13. Максимальные и минимальные дробные числа в дополнительном коде

 

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

Трактовка типа чисел, представленных в дополнительном коде в формате ”слово”, весьма важна при сохранении этих чисел в форматах “двойное слово” и “расширенное слово”. Рассмотрим два примера.

Пример 1. Число, представленное в дополнительном коде в формате “слово” длиной 8 битов (n = 8), сохраняется в формате “двойное слово” длиной 2n (рис.3.14).

В зависимости от типа данных выполняются следующие действия:

для целых чисел (рис.3.14, а):

 

 

число (со знаком) в дополнительном коде сохраняется в младшем слове LSP с выравниванием по правому краю;

в старшем слове MSP и в ”лишних” старших битах младшего слова LSP происходит расширение знака;

знаковым становится старший бит MSB слова MSP: LSP;

для дробных чисел (рис. 3.14, б):

число (со знаком) в дополнительном коде сохраняется в старшем слове MSP с выравниванием по левому краю;

знаковым становится старший бит MSB слова MSP: LSP;

биты младшего слова LSP и “лишние” младшие биты старшего слова MSP заполняются нулями.

Пример 2. Число, представленное в дополнительном коде в формате “слово” длиной 8 битов (n = 8) сохраняется в формате “расширенное слово” длиной k = 20. Независимо от типа данных выполняются следующие действия (рис.3.15, а, б):

число (со знаком) в дополнительном коде размещается в слове MSP:LSP (см. выше);

в расширении EXT происходит расширение знака;

знаковым становится старший бит MSB слова EXT: MSP: LSP.

Из приведенных примеров видно, что расширение знака числа, представленного в дополнительном коде, не меняет его значения (см. десятичные эквиваленты на рис.3.14 и 3.15).Это преимущество дополнительного кода используется, в частности, в операциях пересылок данных, когда изменяется формат их представления (см.разд.3.7.10).

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

 

 

Date: 2015-07-17; view: 3954; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию