русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Модифицированный дополнительный код


Дата добавления: 2014-11-27; просмотров: 4248; Нарушение авторских прав


Использование модифицированного дополнительного кода связано с проблемой переполнения разрядной сетки. Вычисления в процессоре "классической архитектуры" концептуально производятся параллельно по разрядам операндов и последовательно по операциям. Для большинства микропроцессоров параллельность обработки определяется размером операнда. Это байт (8 бит), слово (2 байта), двойное слово (4 байта) или учетверенное слово (8 байт). Количество байт бит ? параллельной обработки (ширина обработки) определяется разрядностью шин данных, регистров и устройств обработки.

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

Рассмотрим несколько примеров выполнения арифметических операций в дополнительном коде над числами А = 0.101(2) = 5(10) и В = 0.110(2) = 6(10).

1. С = А – В = А + (–В)

0.101 + 5(10)

+ 1.010 – 6(10)

1.111 – 1(10) нет переноса, нет переполнения, результат верен.

2. С = В – А = В + (–А)

0.110 + 6(10)

+ 1.011 – 5(10)

1½0.001 + 1(10) есть перенос, нет переполнения, результат верен.

3. С = А + В,

0.101 + 5(10)

+ 0.110 + 6(10)

1.011 – 3(10)), нет переноса, есть переполнение, результат неверен. (должно быть +11(10))

4. С = (–А) + (–В)

1.011 – 5(10)



+ 1.010 – 6(10)

1½0.101 + 5(10) , есть перенос, есть переполнение, результат неверен. (должно быть -11(10))

5. С =(–А) + (–D), где D = 3(10) = 0.011(2)

1.011 – 5(10)



+ 1.101 – 3(10)

1½1.000 – 8(10) есть перенос, переполнения нет, результат верен.

Из приведенных примеров видно что:

· переполнение разрядной сетки (примеры 3 и 4) ведет к ошибке в результате,

· переполнение не всегда совпадает с переносом из старшего разряда,

· для выявления переполнения нужно также анализировать соотношение знаков исходных операндов.

Процедура выявления переполнения разрядной сетки намного упрощается при использовании модифицированного дополнительного кода.

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

Приведенные выше примеры выполнения операций в модифицированном дополнительном коде выглядят так:

1. 00.101 + 5(10)

+ 11.010 – 6(10)

11.111 – 1(10) нет переноса, нет переполнения.

2. 00.110 + 6(10)

+ 11.011 – 5(10)

1½ 00.001 + 1(10) есть перенос, нет переполнения.

3. 00.101 + 5(10)

+ 00.110 + 6(10)

01.011 +11(10), нет переноса, есть переполнение.

4. 11.011 – 5(10)

+ 11.010 – 6(10)

1½10.101 –11(10), есть перенос, есть переполнение.

5. 11.011 – 5(10)

+ 11.101 – 3(10)

1½11.000 – 8(10) есть перенос, нет переполнения.

В дополнительном коде факт переполнения определяется по несовпадению цифр знака. При этом, (даже) в случае переполнения первая цифра знака указывает на верный знак результата, а вторая – на верную старшую цифру результата, не поместившуюся в разрядную сетку значащих цифр результата. Таким образом, правильный результат может быть сохранен для последующей обработки.



<== предыдущая лекция | следующая лекция ==>
Дополнительный код. | Обратный код


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.127 сек.