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

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

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



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

Дополнительный код (ДК) строится следующим образом.
Дополнительный код положительного двоичного числа совпадает с его прямым кодом. Для отрицательных двоичных чисел сначала формируется обратный код (ОК), а затем к младшему разряду (МЗР) прибавляют 1. Обратный перевод ДК в ПК осуществляется аналогичными операциями в той же последовательности.
Пример. Записать дополнительный код чисел 



Использование ДК для представления отрицательных чисел устраняет двусмысленное представление нулевого результата (возникновение двух нулей: положительного и отрицательного), так как отрицательный ноль исчезает.
В ЭВМ используется быстрый способ формирования ДК. Его суть заключается в следующем. Двоичное число в ПК просматривается от младшего значащего разряда к старшему. Пока встречаются нули, их копируют в одноименные разряды результата. Первая встретившаяся единица также копируется в соответствующий разряд, а каждый последующий бит исходного числа заменяется на противоположный (0 – на 1, 1 – на 0).
Пример. Записать дополнительный код числа 


Как видно, результаты, полученные при преобразовании обоими методами, совпадают.
Модифицированные обратные и дополнительные коды
Вопросы для самопроверки:
Лекция «6. Информационный рынок» также может быть Вам полезна.
1. Дайте определение системы счисления. Какие системы счисления Вы знаете?
2. Сформулируйте правило перевода целых чисел из одной системы счисления в другую.
3. Сформулируйте правило перевода дробных чисел из одной системы счисления в другую.
4. В чем особенность перевода чисел из восьмеричной (шестнадцатеричной) системы счисления в двоичную и наоборот?
5. Сформулируйте правило формирования прямого, обратного и дополнительного кодов двоичного числа.
Охарактеризуйте машинные двоичные коды прямой обратный и дополнительный
Арифметические операции на сумматорах прямого, обратного и дополнительного кода
Все операции в ЭВМ выполняют над числами, представленными специальными машинными кодами. Их использование позволяет обрабатывать знаковые разряды чисел так же, как и значащие разряды, а также заменять операцию вычитания операцией сложения.
Каждому двоичному числу можно поставить в соответствие несколько видов кодов.
Различают следующие коды двоичных чисел: прямой (П), обратный (ОК) и дополнительный (ДК).
Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (0 или 1) перед его старшим числовым разрядом.
Прямой код двоичного числа образуется по следующему алгоритму:
1) определить данное двоичное число: либо целое (порядок), либо правильная дробь (мантисса);
2) если это дробь, то цифры после запятой можно рассматривать как целое число;
3) если это целое и положительное двоичное число, то вместе с добавлением нуля в старший разряд число превращается в код.
Для отрицательного двоичного числа перед ним ставится единица.
число Y 2 = +0,11011012 → код числа Y пр = 01101101.
Подчеркиванием выделяют знаковые разряды.
Обратный код двоичного числа образуется по следующему алгоритму:
1) обратный код положительных чисел совпадает с их прямым кодом;
2) обратный код отрицательного числа содержит единицу в знаковом разряде числа, а значащие разряды числа заменяются инверсными, т. е. нули заменяются единицами, а единицы нулями.
Свое название обратный код получил потому, что коды цифр отрицательного числа заменены инверсными.
Наиболее важные свойства обратного кода чисел:
— сложение положительного числа С с его отрицательным значением в обратном коде дает так называемую машинную единицу МЕок = 1|1111, состоящую из единиц в знаковом и в значащих разрядах числа;
— нуль в обратном коде имеет двоякое значение.
Он может быть как положительным числом 0|0000, так и отрицательным 1|1111.
Двойственное представление нуля явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.
Обратный код положительного двоичного числа совпадает с прямым кодом, а для отрицательного числа нужно, исключая знаковый разряд, во всех остальных разрядах нули заменить единицами и наоборот.
Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда (2 0 – для целых чисел, 2 –k – для дробных).
Основные свойства дополнительного кода:
· сложение дополнительных кодов положительного числа С с его отрицательным значением дает так называемую машинную единицу дополнительного кода:
т. е. число 10 (два) в знаковых разрядах числа;
Дополнительный код положительного числа совпадает с его прямым кодом. Дополнительный код отрицательного числа образуется путем прибавления единицы к обратному коду.
Арифметические действия в машинных кодах
Сложение, а также вычитание чисел в обратном или дополнительном кодах выполняют с использованием обычного правила арифметического сложения многоразрядных чисел.
Это правило распространяется и на знаковые разряды чисел.
Различие обратного и дополнительного кодов связано с последующими действиями с единицей переноса из старшего разряда, изображающего знак числа.
При сложении чисел в обратном коде эту единицу надо прибавить к младшему разряду результата, а в дополнительном коде единица переноса из старшего разряда игнорируется, так как дополнительный код из обратного получается как раз прибавлением единицы.
Сложение и вычитание машинных чисел
Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код согласно таблице.
Сложение (вычитание) машинных чисел
Скобки в представленных выражениях указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа.
Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с таблицей.
При выполнении сложения цифр необходимо соблюдать следующий алгоритм:
1) слагаемые должны иметь одинаковое число разрядов.
Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа;
2) знаковые разряды участвуют в сложении так же, как и значащие;
3) необходимые преобразования кодов производят с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу;
4) при преобразовании единицы переноса из старшего знакового разряда, в случае использования ОК, эта единица складывается с младшим числовым разрядом.
При использовании ДК единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.
1. Сложить два числа: А10 = 7, В10 = 16.
Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:
Сложение в обратном или дополнительном коде дает один и тот же результат:
2. Сложить два числа: А10 = +16, В10 = –7 в ОК и ДК.
По таблице необходимо преобразование А +(–В), в которой второй член преобразуется с учетом знака:
При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда.
В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда.
В случае ДК этот перенос игнорируется.
Пример сложения чисел +18 и –7 приведен в таблице.
Прямой, обратный и дополнительный двоичные коды
В компьютерной арифметике, которая базируется на двоичной системе счисления, операция «вычитания» заменяется операцией «сложения».
Рассмотрим, как это происходит.
Для хранения целых чисел в памяти ЭВМ выделяется фиксированное число двоичных разрядов – бит. Рассмотрим 8–и битовое представление числа. Каждый бит нумеруется «слева – направо» от 0 до 7.
| вес разряда нумерация бит в байте |
| 2 6 | 2 5 | 2 4 | 2 3 | 2 2 | 2 1 | 2 0 |

Старший бит – седьмой – используется для знака числа: 0 – это положительное число, 1 – отрицательное.
Если в разрядах байта с 0 по 6 поместить абсолютное значение числа, а в 7-ом бите установить его знак (0 или 1), то полученное представление числа называется прямым двоичным кодом.
Если в прямом коде число представлено как отрицательное (7-ой бит равен 1), то в числе инвертируются [1] все разряды, кроме знакового. Такое представление числа называется обратный двоичный код.
После прибавления к обратному коду 1 получается дополнительный двоичный код.
Использование дополнительного двоичного кода позволяет создавать схемы, выполняющие вычитание, умножение и деление посредством операции сложения.
Рассмотрим на примерах операцию вычитания для 8-и битовых чисел.
ПРИМЕР 1: Вычесть число 3 из 5 (1012 – 0112).
· Инвертируем все разряды в числе, кроме знакового
· Прибавим к обратному коду единицу
Проверка: Сделаем проверку, преобразуя двоичные числа к десятичному виду:
ПРИМЕР 2: Вычесть число 49 из 63
Получили число 11102 = 1410
Ответ: 11 11112 – 11 00012 = 11102
Проверка: 6310 – 4910 = 1410
ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ. Используя схемы примера 1 или 2, сделайте вычитание целых чисел, используя дополнительный двоичный код.
| Номер варианта | Числа | Номер варианта | Числа |
| 81 и 17 | 64 и 32 | ||
| 42 и 18 | 51 и 28 | ||
| 42 и 36 | 92 и 48 | ||
| 61 и 28 | 67 и 29 | ||
| 74 и 28 | 82 и 29 | ||
| 62 и 39 | 53 и 29 | ||
| 43 и 28 | 83 и 38 | ||
| 78 и 49 | 68 и 29 |
Контрольные вопросы
1. Что такое система счисления?
2. Какие существуют системы счисления?
3. Какие непозиционные системы счисления вы знаете?
4. Приведите примеры записи чисел 467, 89011 в непозиционной системе счисления.
5. Сформулируйте правило, как определяется величина числа в римской системе счисления?
6. Для чего используются непозиционные системы счисления?
7. Чем отличаются позиционные и непозиционные системы счисления?
8. Что такое основание позиционной системы счисления?
9. Для чего используются позиционные системы счисления?
10. Может ли число 5 являться основанием системы счисления?
11. Существует ли двенадцатеричная система счисления?
12. Как математически записать любое число А в произвольной позиционной системе счисления?
13. Что является весом разряда?
14. Приведите пример, указав номер разряда и его вес.
15. Сформулируйте правило, как образуются целые числа в позиционных системах счисления?
16. Приведите пример образования трех целых чисел в шестеричной позиционной системе счисления после числа 6.
17. Что означает понятие продвижение цифры в позиционной системе счисления?
18. Как представляется десятичное число 8 в 16-ной, 8-ной и 2-ной системах счисления?
19. Какие существуют достоинства и недостатки двоичной системы счисления?
20. Что такое мощность алфавита?
21. Правило перевода целого положительного числа из 10-ной системы счисления в любую другую позиционную систему.
22. Как выглядит число 36710 в 16-ной, 8-ной и 2-ной системах счисления?

23. Правило перевода правильной десятичной дроби в любую другую позиционную систему.
24. Сделайте перевод десятичной дроби 0,75 в 16-ную, 8-ную и 2-ную системы счисления.
25. Переведите число 365,2510 в 16-ную, 8-ную и 2-ную системы счисления.
26. Правило перевода восьмеричных и шестнадцатеричных чисел в двоичную систему счисления.
27. Переведите число 1578 и C1216 в двоичную систему счисления.
28. Правило перевода числа из двоичной системы счисления в восьмеричную или шестнадцатеричную.
29. Переведите число 101000011111,110012 в восьмеричную и шестнадцатеричную системы счисления.
30. Применяя правило счета, составьте фрагмент таблицы сложения в восьмеричной и шестнадцатеричной системах счисления.
31. Сложите числа 17, 6 и 5 в различных позиционных системах счисления. Сделайте проверку.
32. Сложите числа 79,25 и 51,125 в различных позиционных системах счисления. Сделайте проверку.
33. Найдите разность чисел 99,05 и 51,25 в различных позиционных системах счисления. Сделайте проверку.
34. Какое представление числа называется прямым двоичным кодом? Приведите пример.
35. Какое представление числа называется обратным двоичным кодом? Приведите пример.
36. Что такое дополнительный двоичный код? Приведите пример.
37. Сделайте вычитание чисел 51 и 28, используя дополнительный код.
Литература
1. Андреева Е.В., Фалина И. Н. Системы счисления и компьютерная арифметика, Издательство: Лаборатория Базовых Знаний
2. Андреева Е.В. Системы счисления и компьютерная арифметика. Издание 3 Бином. Лаборатория знаний
3. Ашарина и. В. Основы программирования на языках С и С++
4. Гашков С. Б. Системы счисления и их применение
5. Гашков С. Б. Системы счисления и их применение
6. Еремина Е.А. Как работает современный компьютер
Вычислительная техника и программирование/Занятие 4
Содержание
Машинные коды [ править ]
Все операции в ЭВМ выполняются над числами, представленными специальными машинными кодами. Их использование позволяет обрабатывать знаковые разряды чисел так же, как и значащие разряды, а также заменять операцию вычитания операцией сложения.
Различают следующие коды двоичных чисел:
Прямой код [ править ]
Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (0 или 1) перед его старшим числовым разрядом.
Обратный код [ править ]
Обратный код двоичного числа образуется по следующему правилу. Обратный код положительных чисел совпадает с их прямым кодом. Обратный код отрицательного числа содержит единицу в знаковом разряде числа, а значащие разряды числа заменяются на инверсные, т.е. нули заменяются единицами, а единицы нулями.
Свое название обратный код получил потому, что коды цифр отрицательного числа заменены на инверсные. Наиболее важные свойства обратного кода чисел:
Дополнительный код [ править ]
Основные свойства дополнительного кода:
• сложение дополнительных кодов положительного числа С с его отрицательным значением дает т.н. машинную единицу дополнительного кода:
МЕдк=МЕок + 2 0 = 10|00…00,
т.е. число 10 (два) в знаковых разрядах числа;
• дополнительный код называется так потому, что представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы
Модифицированные обратные и дополнительные коды [ править ]
Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак «+» в этих кодах кодируется двумя нулевыми знаковыми разрядами, а знак «–» – двумя единичными разрядами.
Арифметические действия в машинных кодах. [ править ]
Сложение (вычитание). Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код согласно таблице.
| Требуемая операция | Необходимое преобразование |
|---|---|
| А+В | А+В |
| А-В | А+(-В) |
| -А+В | (-А)+В |
| -А-В | (-А)+(-В) |
Здесь А и В неотрицательные числа. Скобки в представленных выражениях указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа. Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с таблицей. При выполнении сложения цифр необходимо соблюдать следующие правила:
Пример 1. Сложить два числа: А10 = 7, В10 = 16.
Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:
Сложение в обратном или дополнительном коде дает один и тот же результат:
По таблице необходимо преобразование А+(-В), в которой второй член преобразуется с учетом знака
При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда. В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда (п.4 правил). В случае ДК этот перенос игнорируется.









2 0




