Модифицированные обратный и дополнительный коды.
Представление информации в ЭВМ.
Единицы измерения информации.
Теперь мы знаем электронные устройства, которые используются в ЭВМ. Эти устройства работают с сигналами, которые могут быть представлены в виде двоичных чисел, т.е. 0 и 1.
Выше были определены понятия: «бит», «байт» и «машинное слово». В ЭВМ также пользуется следующими понятиями (Табл. 2.18.):
Таблица 2.18. Таблица единиц измерения информации.
Название | Символ | Значение | Степень |
Бит | bit | Наименьшая возможная единица измерения информации в вычислительной технике. Принимает значения: 0 или 1. Передается различными уровнями напряжения либо тока | |
Байт | B | Минимально адресуемая последовательность фиксированного числа битов. В описании сетевых протоколов, может использоваться термин «октет». 1B = 8 bit | |
Килобайт | KB | 1KB = 1024B | 103 |
Мегабайт | MB | 1MB = 1024KB | 106 |
Гигабайт | GB | 1GB = 1024MB | 109 |
Терабайт | TB | 1TB = 1024GB | 1012 |
Петабайт | PB | 1PB = 1024TB | 1015 |
Коды чисел.
В параграфе 2.3. рассматривались правила арифметических действий. В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к арифметическому сложению кодов этих чисел. Рассмотрим следующие коды чисел:
· прямой;
· обратный;
· дополнительный;
· модифицированный код.
Прямой код: используется для представления отрицательных чисел в запоминающем устройстве ЭВМ, а также при умножении и делении.
Обратный и дополнительный коды: используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока ЭВМ.
Предположим, что длина кода не больше 1 байта.
К кодам выдвигаются следующие требования:
· разряды числа в коде жестко связаны с разрядами байта.
· для записи кода знака в байте отводится фиксированный, строго определенный разряд.
Поэтому, в байте (Рис. 2.35) для представления числа будет отведено 7 разрядов (0 – 6), а для записи кода знака один разряд (7) .
Рис. 2.35
Знак | Значение кода | ||||||
Прямой код.
Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1 (Табл.2.19).
Таблица 2.19. Примеры прямого кода.
Знак | Значение кода | Примечание | ||||||
Число +10101 | ||||||||
Число +11101 | ||||||||
Число +1010101 | ||||||||
Число -1110 | ||||||||
Число -1101110 | ||||||||
Число -1111111 |
Обратный код.
Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица (Табл.2.20).
Таблица 2.20. Примеры обратного кода.
Знак | Значение кода | Примечание | ||||||
Число +10101 | ||||||||
Число +11101 | ||||||||
Число +1010101 | ||||||||
Число -1110 | ||||||||
Число -1101110 | ||||||||
Число -1111111 |
Дополнительный код.
Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы (Табл.2.21).
Таблица 2.21. Примеры дополнительного кода.
Знак | Значение кода | Примечание | ||||||
Число +10101 | ||||||||
Число +11101 | ||||||||
Число +1010101 | ||||||||
Число -1110 | ||||||||
Число -1101110 | ||||||||
Число -1111111 |
Сложение чисел в кодах.
При сложении чисел в кодах возникающая единица переноса из седьмого бита в знаковый бит отбрасывается (Табл.2.22).
Пример.
A = +1010101
B = +1011101
A + B = 1010101 + 1011101
Таблица 2.22. Пример сложения положительных чисел.
Знак | Значение кода | Примечание | |||||||
A | |||||||||
+ | B | ||||||||
= | A + B. Единица переноса из седьмого бита в знаковый бит отбрасывается |
Рассмотрим правила записи в знаковом бите.
При сложении чисел в обратном коде возникающая единица переноса в знаковом бите прибавляется к младшему разряду суммы кодов.
Если результат арифметических действий является кодом отрицательного числа, необходимо преобразовать его в прямой код. При этом обратный код преобразуется в прямой заменой цифр во всех разрядах, кроме знакового, на противоположные (Табл.2.23 - Табл.2.24).
Пример.
A = -1010101;
B = +1011101
Таблица 2.23. Пример сложения чисел в обратном коде, с положительной суммой.
Знак | Значение кода | Примечание | |||||||
Обратный код для A | |||||||||
+ | Обратный код для B | ||||||||
В знаковом бите появилась единица переноса | |||||||||
1+1 | Единица переноса в знаковом бите прибавлена к значению младшего бита. | ||||||||
= | A + B = 1000 – положительная сумма |
Пример.
A = +1010101;
B = -1011101
Таблица 2.24. Пример сложения чисел в обратном коде, с отрицательной суммой.
Знак | Значение кода | Примечание | |||||||
Обратный код для A | |||||||||
+ | Обратный код для B | ||||||||
Отрицательное число. Переводим в прямой код. | |||||||||
= | A + B = -1000 – отрицательная сумма |
При сложении чисел в дополнительном коде возникающая единица переноса в знаковом бите отбрасывается.
Дополнительный код преобразуется в прямой также, как и обратный, с последующим прибавлением единицы к младшему разряду (Табл.2.25 - Табл.2.26).
Пример.
A = -1010101;
B = +1011101
Таблица 2.25. Пример сложения чисел в дополнительном коде, с положительной суммой.
Знак | Значение кода | Примечание | |||||||
Дополнительный код для A | |||||||||
+ | Дополнительный код для B | ||||||||
В знаковом бите появилась единица переноса. Она отбрасывается | |||||||||
= | A + B = 1000 – положительная сумма |
Пример.
A = +1010101;
B = -1011101
Таблица 2.26. Пример сложения чисел в дополнительном коде, с отрицательной суммой.
Знак | Значение кода | Примечание | |||||||
Дополнительный код для A | |||||||||
+ | Дополнительный код для B | ||||||||
Отрицательное число. Переводим в прямой код. | |||||||||
Единицу прибавляем к значению младшего бита. | |||||||||
= | A + B = -1000 – отрицательная сумма |
Модифицированные обратный и дополнительный коды.
Ранее говорилось, что из седьмого бита, может происходить перенос единицы в знаковый разряд. Это приводит к неправильному результату.
Для обнаружения такого случая вводятся модифицированные коды. Для них к байту добавляют еще один бит для знака.
В модифицированном обратном и модифицированном дополнительном кодах под знак числа отводится не один, а два бита:
· "00" соответствует знаку "+";
· "11" - знаку "-".
Любая другая комбинация ("01" или "10"), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки.
Сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах.
Рассмотрим сложение чисел в модифицированных кодах (Табл.2.27 - Табл.2.31) , используя данные предыдущих примеров.
Пример.
A = +1010101
B = +1011101
A + B = 1010101 + 1011101
Таблица 2.27. Пример сложения положительных чисел в модифицированных кодах с переполнением
Знак | Значение кода | Примечание | ||||||||
А | ||||||||||
+ | В | |||||||||
= | Переполнение |
Пример.
A = -1010101;
B = +1011101
Таблица 2.28. Пример сложения чисел в модифицированных кодах в обратном коде, с положительной суммой.
Знак | Значение кода | Примечание | ||||||||
Обратный код для A | ||||||||||
+ | Обратный код для B | |||||||||
В знаковом бите появилась единица переноса | ||||||||||
1+1 | Единица переноса в знаковом бите прибавлена к значению младшего бита. | |||||||||
= | A + B = 1000 – положительная сумма |
Пример.
A = +1010101;
B = -1011101
Таблица 2.29. Пример сложения чисел в модифицированных кодах в обратном коде, с отрицательной суммой
Знак | Значение кода | Примечание | ||||||||
Обратный код для A | ||||||||||
+ | Обратный код для B | |||||||||
Отрицательное число. Переводим в прямой код. | ||||||||||
= | A + B = -1000 – отрицательная сумма |
Пример.
A = -1010101;
B = +1011101
Таблица 2.30. Пример сложения чисел в модифицированных кодах в дополнительном коде, с положительной суммой.
Знак | Значение кода | Примечание | ||||||||
Дополнительный код для A | ||||||||||
+ | Дополнительный код для B | |||||||||
В знаковом бите появилась единица переноса. Она отбрасывается | ||||||||||
= | A + B = 1000 – положительная сумма |
Пример.
A = +1010101;
B = -1011101
Таблица 2.31. Пример сложения чисел в модифицированных кодах в дополнительном коде, с отрицательной суммой