русс | укр

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

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

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

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


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

Представление отрицательных чисел в ЭВМ.


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


Для кодирования знака двоичного числа используется старший ("знаковый") разряд (ноль соответствует плюсу, единица - минусу). Такая форма представления числа называется прямым кодом. Формула для образования прямого кода правильной дроби имеет вид:


Примеры:
A = 0,110111 --> [A]пр = 0,110111
A = -0,110111 --> [A]пр = 1 - (-0,110111) = 1,110111

Прямой код целого числа получается по формуле:

где 10 - число 2 в двоичной системе счисления,
n - количество позиций в разрядной сетке.

Например, при n=8
A = 110111 --> [A]пр = 00110111
A = -110111 --> [A]пр = 10000000 - (-110111) = 10110111

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

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

[A]доп = 10 + A.

Формула для образования обратного кода дроби:

[A]обр = 10 - 10-(n-1) + A.

Например, при n = 8, для A = -0,1100001
[A]доп = 10 + (-0,1100001) = 1,0011111
[A]обр = 10-10-7+(-0,1100001) = 1,1111111-0,1100001 = 1,0011110.

Формула для образования дополнительного кода целого числа:

[A]доп = 10n + A.

Формула для образования обратного кода целого числа:

[A]обр = 10n - 1 + A.

Например, при n = 8, для A = -1100001
[A]доп = 100000000 + (-1100001) = 10011111
[A]обр = 100000000-1+(-1100001) = 11111111-1100001 = 10011110.

Таким образом, правила для образования дополнительного и обратного кода состоят в следующем:
- для образования дополнительного кода отрицательного числа необходимо в знаковом разряде поставить единицу, а все цифровые разряды инвертировать (заменить 1 на 0, а 0 - на 1), после чего прибавить 1 к младшему разряду;
- для образования обратного кода отрицательного числа необходимо в знаковом разряде поставить единицу, а все цифровые разряды инвертировать.



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

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

Замена вычитания двоичных чисел A1 - A2 сложением с дополнениями [A1]пр + [-A2]доп или [A1]пр + [-A2]обр позволяет оперировать со знаковыми разрядами так же, как и с цифровыми. При этом перенос из старшего знакового разряда, если он возникает, учитывается по разному для обратного и дополнительного кодов:
- при использовании дополнительного кода единица переноса из знакового разряда отбрасывается;
- при использовании обратного кода единица переноса из знакового разряда прибавляется к младшему разряду суммы (осуществляется так называемый циклический перенос).

Пример: складываем числа A1=0,10010001 и A2= -0,01100110

При использовании обратного кода получим:

[A1]пр = 0,10010001

+
[A2]обр = 1,10011001
-------------
10,00101010
|__________1
-------------
Результат: 0,00101011

При использовании дополнительного кода получим:

[A1]пр = 0,10010001
+
[A2]доп = 1,10011010
--------------
Результат: 0,00101011

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

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

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

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

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



<== предыдущая лекция | следующая лекция ==>
Формы представления чисел в ЭВМ. | Двоичное вычитание


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


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

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

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


 


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

 
 

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

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