Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://uneex.mithril.cs.msu.su/static/AltDocs_informatika1/Book1/1_intro/01_inform/060_chisl/01_bin/code.html
Дата изменения: Mon Sep 26 12:36:03 2011 Дата индексирования: Tue Oct 2 02:27:29 2012 Кодировка: koi8-r |
При выполнении арифметических действий результат может оказаться не только положительным, но и отрицательным числом. Как представить знак "-" в схемах машины, если в них фиксируется лишь два состояния -- 0 или 1? Договорились знак числа определять самым левым, старшим битом. Если число положительное, то знаковый разряд равен 0, а если отрицательное, то 1. Решение о выделении знакового разряда, конечно, сказалось на максимальных величинах представляемых чисел. Если для хранения числа отводится два байта (16 разрядов), то разместить там можно только числа от -32768 до +32767. Следует отметить, что даже если под хранение чисел отводить не два, а более байтов, то и тогда невозможно оперировать всем множеством целых чисел; всегда существует конечный диапазон представимых в ЭВМ чисел.
Оказалось, что наиболее удобно оперировать отрицательными двоичными числами в так называемом дополнительном коде. Для получения дополнительного кода нужно прибавить единицу к инвертированному числу, т. е. к обратному коду этого числа. Обратный код получают путем замены в двоичном представлении числа нулей на единицы, а единиц -- на нули. Эта операция носит название инвертирование.
Число | Прямой код | Обратный код | Дополнительный код |
---|---|---|---|
-3 | 1011 | 1100 | 1101 |
-2 | 1010 | 1101 | 1110 |
-1 | 1001 | 1110 | 1111 |
0 | 0000 | ||
1 | 0001 | ||
2 | 0010 | ||
3 | 0011 |
Если двигаться вниз по столбцам приведенной таблицы, то в дополнительном коде каждое последующее число получается прибавлением единицы к предыдущему. Важно, что это свойство не нарушается и при переходе к неотрицательным числам, если не учитывать перенос за пределы четвертого разряда. Эта особенность дополнительного кода и явилась причиной его применения в миникомпьютерах и микрокомпьютерах, а также во многих больших ЭВМ.