Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно.
Положительные числа в ЭВМ всегда представляются с помощью прямого кода. Прямой код числа полностью совпадает с записью самого числа в ячейке машины.
билет 15
15 Коды чисел: прямой, обратный, дополнительный
Коды чисел
Прямой код числа.
Представление числа в привычной форме "знак""величина", при которой старший разряд
ячейки отводится под знак, а остальные под запись числа в двоичной системе, называется
прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и 1001 для
8разрядной ячейки равен 00001001 и 10001001 соответственно.
Положительные числа в ЭВМ всегда представляются с помощью прямого кода. Прямой
код числа полностью совпадает с записью самого числа в ячейке машины. Прямой код
отрицательного числа отличается от прямого кода соответствующего положительного
числа лишь содержимым знакового разряда. Но отрицательные целые числа не
представляются в ЭВМ с помощью прямого кода, для их представления используется так
называемый дополнительный код.
Дополнительный код числа.
Дополнительный код положительного числа равен прямому коду этого числа.
Дополнительный код отрицательного числа m равен 2k|m|, где k количество разрядов в
ячейке.
Как уже было сказано, при представлении неотрицательных чисел в беззнаковом формате
все разряды ячейки отводятся под само число. Например, запись числа 243=11110011 в
одном байте при беззнаковом представлении будет выглядеть следующим образом:
1 1 1 1 0 0 1 1
При представлении целых чисел со знаком старший (левый) разряд отводится под знак
числа, и под собственно число остаётся на один разряд меньше. Поэтому, если приведённое
выше состояние ячейки рассматривать как запись целого числа со знаком, то для
компьютера в этой ячейке записано число 13 (243+13=256=28).
Но если это же отрицательное число записать в ячейку из 16ти разрядов, то содержимое
ячейки будет следующим:
1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1
Знаковый разряд
Возникает вопрос: с какой целью отрицательные числа записываются в виде
дополнительного кода и как получить дополнительный код отрицательного числа?
Дополнительный код используется для упрощения выполнения арифметических
операций. Если бы вычислительная машина работала с прямыми кодами положительных и
отрицательных чисел, то при выполнении арифметических операций следовало бы
выполнять ряд дополнительных действий. Например, при сложении нужно было бы
проверять знаки обоих операндов и определять знак результата. Если знаки одинаковые, то
вычисляется сумма операндов и ей присваивается тот же знак. Если знаки разные, то из
большего по абсолютной величине числа вычитается меньшее и результату присваивается
знак большего числа. То есть при таком представлении чисел (в виде только прямого кода)
операция сложения реализуется через достаточно сложный алгоритм. Если же
отрицательные числа представлять в виде дополнительного кода, то операция сложения, в
том числе и разного знака, сводится к из поразрядному сложению.
Для компьютерного представления целых чисел обычно используется один, два или четыре
байта, то есть ячейка памяти будет состоять из восьми, шестнадцати или тридцати двух
разрядов соответственно