русс | укр

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

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

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

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


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

Переполнение разрядной сетки.


Дата добавления: 2015-08-31; просмотров: 3923; Нарушение авторских прав


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

Пример 1. [ x]3 = 0.1011 , [y ]3 = 0.1101 [ x+y]3 = (0)1.1000

Пример 2. [ x ]3 = 1.0101 , [ y ]3 = 1.0011 , [x +y ]3 = (1)0.0010

В первом примере перенос в знаковый разряд равен 1, а из знакового равен 0. Во втором примере перенос в знаковый разряд равен 0, а из знакового равен1. Это свидетельствует о переполнении разрядной сетки.

Операция вычитания.

Вычитание целых чисел произвольного знака можно свести к операции алгебраического сложения x - y = x + ( -y).

Для дополнительного и обратного кода получим

[ x]3 – [y ]3 = [ x]3 + [ y ]3 +1 = [ x – y ]3 [ x]2 – [y ]2 = [ x]2 + [ y ]2 = [ x – y ]2 ,

где [ y ] - означает инвертирование кода.

Для вычитания в сумматоре должна быть предусмотрена как прямая, так и инверсная передача кодов исходных чисел.

Пример.

x = 1001, [x]3 = 0.1001 [x]3 = 0.1001 y = -0011, [y]3 = 1.1101 [y]3 = 0.0010 [x -y ]3 =0.1001+ 0.0010+1 = 0.1100

[x -y ]3 = 0.1100

Пример.

x = -1001, [x]2 = 1.0110 [x]2 = 1.0110 y = -0100 , [y]2 = 1.1011 [y]2 = 0.0100 [x -y ]2 = 1.0110 - 0.0100 = 1.1010

· Алгебраическое представление двоичных чисел

Знак числа обычно кодируется двоичной цифрой, при этом код 0 означает знак + (плюс), код 1 — знак – (минус). Для алгебраического представления чисел, то есть для представления чисел с учетом их знака, в машинах используются специальные коды:

· прямой код числа;

· обратный код числа;

· дополнительный код числа.

При этом два последних кода позволяют заменить неудобную для компьютера операцию вычитания на операцию сложения с отрицательным числом.

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



1. Прямой код числа N — [N]пр. Пусть N = a a a ... a;

· если N > 0, то [N]пр = 0, a a a ... a;

· если N < 0, то [N]пр = 1, a a a ... a;

· если N = 0, то имеет место неоднозначность: [0]пр = 0,0... или [0]пр = 1,0...

Обобщая результаты, получим:

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

Операции умножения и деления в прямом коде выполняются обычным образом, но знак результата определяется по совпадению или не совпадению знаков, участвовавших в операции чисел.

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

2. Обратный код числа N — [N]обр.

Символ а* означает величину, обратную а (инверсию а), то есть если а = 1, то а* = 0, и наоборот.

· если N > 0, то [N]обр = [N]пр = 0, a a ... a,

· если N < 0, то [N]обр = 1, a* a* ... a*,

· если N = 0, то неоднозначность, [0]обр = 0,00 ... 0 или [0]обр = 1,11...1.

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

Например, число N = 0,1011, [N]обр = 0,1011. Число N = –0,1011, [N]обр = 1,0100. В случае, когда N < 0, [N]обр = 10 – 1·10–n + N, то есть [N]обр = 1,1111 + N.

Обобщая результаты, получим

3. Дополнительный код числа N — [N]доп

· если N >= 0, то [N]доп = [N]пр = 0, a a ... a,

· если N <= 0, то [N]доп = 1, a* a* ... a* + 0,0 0 ... 1.

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

Например, N = 0,1011, [N]доп = 0,1011; N = –0,1100, [N]доп = 1,0100; N = –0,0000, [N]доп = 10,0000 = 0,0000 (1 исчезает). Неоднозначности в изображении 0 нет. Обобщая, можно записать:

СОВЕТ. Эмпирическое правило: для получения дополнительного кода отрицательного числа необходимо все символы этого числа инвертировать, кроме последней (младшей) единицы и тех нулей, которые за ней следуют.



<== предыдущая лекция | следующая лекция ==>
Сложение и вычитание целых двоичных чисел. | Прочие системы счисления


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


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

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

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


 


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

 
 

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

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