как переводить в прямой код

Содержание
  1. Представление положительных и отрицательных чисел в памяти компьютера. Прямой и дополнительный код числа
  2. Прямой код
  3. Дополнительный код
  4. Обратный и дополнительный коды двоичных чисел
  5. Коды для представления чисел
  6. Представление целых чисел: прямой код, код со сдвигом, дополнительный код
  7. Содержание
  8. Прямой код [ править ]
  9. Достоинства представления чисел с помощью прямого кода [ править ]
  10. Недостатки представления чисел с помощью прямого кода [ править ]
  11. Код со сдвигом [ править ]
  12. Достоинства представления чисел с помощью кода со сдвигом [ править ]
  13. Недостатки представления чисел с помощью кода со сдвигом [ править ]
  14. Дополнительный код (дополнение до единицы) [ править ]
  15. Достоинства представления чисел с помощью кода с дополнением до единицы [ править ]
  16. Недостатки представления чисел с помощью кода с дополнением до единицы [ править ]
  17. Дополнительный код (дополнение до двух) [ править ]
  18. Длинная арифметика для чисел, представленных с помощью кода с дополнением до двух [ править ]
  19. Достоинства представления чисел с помощью кода с дополнением до двух [ править ]
  20. Недостатки представления чисел с помощью кода с дополнением до двух [ править ]
  21. Прямой, дополнительный и обратный коды
  22. Прямой, дополнительный и обратный код

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

Прямой код

Прямой код – это представление числа в двоичной системе счисления, при котором первый (старший) разряд отводится под знак числа. Если число положительное, то в левый разряд записывается 0; если число отрицательное, то в левый разряд записывается 1.

Таким образом, в двоичной системе счисления, используя прямой код, в восьмиразрядной ячейке (байте) можно записать семиразрядное число. Например:

0 0001101 – положительное число
1 0001101 – отрицательное число

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

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

Дополнительный код

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

Все остальные разряды числа в дополнительном коде сначала инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, сначала надо заменить нули на единицы, а единицы на нули, кроме первого разряда. Получаем 1 1110011. Но это еще не окончательный вид дополнительного кода числа.

Далее следует прибавить единицу к получившемуся инверсией числу:

1 1110011 + 1 = 1 1110100

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

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

Источник

Обратный и дополнительный коды двоичных чисел

l4 image002equation distanceprojection image013 piramid linep image002

Пример перевода
x1=10101-[x1]пр=010101
x2=-11101-[x2]пр=111101
x3=0,101-[x3]пр=0,101
x4=-0,111-[x4]пр=1,111
2) Обратный код числа, используется для выполнения арифметических операций вычитания, умножения, деления, через сложение. Обратный код положительного числа совпадает с его прямым кодом, обратный код отрицательного числа формируется по правилам: в знаковом разряде записывается “1”; цифровые значения меняются на противоположные.

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

Пример перевода
x1=10101-[x1]доп=010101
x2=-11101-[x2]обр=100010+1-[x2]доп=100011
x3=0,101-[x3]доп=0,101
x4=-0,111-[x4]обр=1,000+1-[x4]доп=1,001
Для выявления ошибок при выполнении арифметических операций используются также модифицированные коды: модифицированный прямой; модифицированный обратный; модифицированный дополнительный, для которых под код знака числа отводится два разряда, т.е. “+”=00; ”-”=11. Если в результате выполнения операции в знаковом разряде появляется комбинация 10 или 01 то для машины это признак ошибки, если 00 или 11 то результат верный.

Источник

Коды для представления чисел

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

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

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

Прямой код используется при хранении чисел в памяти ЭВМ, а также при выполнении операций умножения и деления, но формат представления чисел в прямом коде неудобен для использования в вычислениях, поскольку сложение и вычитание положительных и отрицательных чисел выполняется по–разному, а потому требуется анализировать знаковые разряды операндов. Поэтому прямой код практически не применяется при реализации в АЛУ арифметических операций над целыми числами. Вместо этого формата широкое распространение получили форматы представления чисел в обратном и дополнительном кодах.

Пример: Дано число X=-1011. Перевести число в прямой код.

Обратный код положительного числа совпадает с прямым, а при записи отрицательного числа все его цифры, кроме цифры, изображающей знак числа, заменяются на противоположные (0 заменяется на 1, а 1 – на 0).

Пример: Дано число X=-1011. Перевести число в обратный код.

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

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

Пример: Дано число X=-1011. Перевести в дополнительный код.

Пример: Дано число X=-0,1011. Перевести число в прямой, обратный и дополнительный код, при условии, что разрядная сетка содержит 8 разрядов.

Источник

Представление целых чисел: прямой код, код со сдвигом, дополнительный код

Выбор способа хранения целых чисел в памяти компьютера — не такая тривиальная задача, как могло бы показаться на первый взгляд. Желательно, чтобы этот способ:

Рассмотрим разные методы представления.

Содержание

Прямой код [ править ]

230px %D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5 %D0%B4%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D1%85 %D1%87%D0%B8%D1%81%D0%B5%D0%BB %D0%B2 %D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%BC %D0%BA%D0%BE%D0%B4%D0%B5

Достоинства представления чисел с помощью прямого кода [ править ]

Недостатки представления чисел с помощью прямого кода [ править ]

Из-за весьма существенных недостатков прямой код используется очень редко.

Код со сдвигом [ править ]

230px %D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5 %D0%B4%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D1%85 %D1%87%D0%B8%D1%81%D0%B5%D0%BB %D0%B2 %D0%BA%D0%BE%D0%B4%D0%B5 %D1%81%D0%BE %D1%81%D0%B4%D0%B2%D0%B8%D0%B3%D0%BE%D0%BC

По сути, при таком кодировании:

Достоинства представления чисел с помощью кода со сдвигом [ править ]

Недостатки представления чисел с помощью кода со сдвигом [ править ]

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

Дополнительный код (дополнение до единицы) [ править ]

%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5 %D1%87%D0%B8%D1%81%D0%B5%D0%BB %D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC %D0%B4%D0%BE %D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%86%D1%8B

В качестве альтернативы представления целых чисел может использоваться код с дополнением до единицы (англ. Ones’ complement).

Алгоритм получения кода числа:

Достоинства представления чисел с помощью кода с дополнением до единицы [ править ]

Недостатки представления чисел с помощью кода с дополнением до единицы [ править ]

Дополнительный код (дополнение до двух) [ править ]

230px %D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5 %D0%B4%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D1%85 %D1%87%D0%B8%D1%81%D0%B5%D0%BB %D0%B2 %D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC %D0%BA%D0%BE%D0%B4%D0%B5

Чаще всего для представления отрицательных чисел используется код с дополнением до двух (англ. Two’s complement).

Алгоритм получения дополнительного кода числа:

Длинная арифметика для чисел, представленных с помощью кода с дополнением до двух [ править ]

Достоинства представления чисел с помощью кода с дополнением до двух [ править ]

Недостатки представления чисел с помощью кода с дополнением до двух [ править ]

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

Источник

Прямой, дополнительный и обратный коды

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

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

Обновление: Из комментариев становится ясно, что люди не вполне понимают, что делает этот калькулятор. Точнее, что делал — применял алгоритм вычисления дополнительного кода к любому числу. Люди хотят, чтобы он им просто показывал дополнительный код числа. Ну хорошо — теперь при вводе положительного числа калькулятор показывает представление числа в двоичной форме, ибо для него нет обратного и дополнительного кода, а при вводе отрицательного показывает дополнительный и обратный код.

Прямой, дополнительный и обратный код

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

Обратный код числа, или дополнение до единицы (one’s complement) это инвертирование прямого кода (поэтому его еще называют инверсный код). То есть все нули заменяются на единицы, а единицы на нули.

Дополнительный код числа, или дополнение до двойки (two’s complement) это обратный код, к младшему значащему разряду которого прибавлена единица

А теперь «зачем, зачем это все?» ©

Для различия положительных и отрицательных чисел выделяют старший разряд числа, который называется знаковым (sign bit)
0 в этом разряде говорит нам о том, что это положительное число, а 1 — отрицательное.

С положительными числами все вроде бы понятно, для их представления можно использовать прямой код
0 — 0000
1 — 0001
7 — 0111

А как представить отрицательные числа?

И это оказалось очень удобно для машинных вычислений — при таком представлении отрицательного числа операции сложения и вычитания можно реализовать одной схемой сложения, при этом очень легко определять переполнение результата (когда для представления получившегося числа не хватает разрядности)

Пара примеров
7-3=4
0111 прямой код 7
1101 дополнительный код 3
0100 результат сложения 4

-1+7=6
1111 дополнительный код 1
0111 прямой код 7
0110 результат сложения 6

Что касается переполнения — оно определяется по двум последним переносам, включая перенос за старший разряд. При этом если переносы 11 или 00, то переполнения не было, а если 01 или 10, то было. При этом, если переполнения не было, то выход за разряды можно игнорировать.

Примеры где показаны переносы и пятый разряд

00111 прямой код 7
00001 прямой код 1
01110 переносы
01000 результат 8 — переполнение

Два последних переноса 01 — переполнение

-7+7=0
00111 прямой код 7
01001 дополнительный код 7
11110 переносы
10000 результат 16 — но пятый разряд можно игнорировать, реальный результат 0

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

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

Источник

Общеобразовательный справочник
Adblock
detector