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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Код со сдвигом)
Строка 18: Строка 18:
 
*Переводим получившееся число в двоичную систему исчисления.
 
*Переводим получившееся число в двоичную систему исчисления.
  
Диапазон значений [-<tex> 2^{n-1} </tex>;<tex> 2^{n-1}-1 </tex>]
+
Диапазон значений [<tex>-2^{n-1} </tex>;<tex> 2^{n-1}-1 </tex>]
 
 
  
 
== Дополнительный код ==
 
== Дополнительный код ==

Версия 04:49, 27 ноября 2010

Прямой код

При записи числа в прямом коде старший разряд является знаковым разрядом. Если его значение равно 0 — то число положительное, если 1 — то отрицательное. В остальных разрядах (которые называются цифровыми разрядами) записывается двоичное представление модуля числа.

Применение прямого кода

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

  • в прямом коде существует два нуля ("+" и "-" ноль)
  • крайне неудобно выполнять арифметические операции с отрицательными числами

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

Код со сдвигом

С помощью кода со сдвигом можно представить [math] 2^n [/math] чисел. Суть кода в том, что мы сдвигаем целочисленный отрезок (от нуля до [math] 2^{n} [/math]) влево на [math] 2^{n-1} [/math], а затем последовательно кодируем получившееся на этом отрезке числа , в порядке возрастания, кодами от 000...0 до 111...1

Принцип кодирования следующий:

  • К кодируемому числу прибавляем [math] 2^{n-1} [/math]
  • Переводим получившееся число в двоичную систему исчисления.

Диапазон значений [[math]-2^{n-1} [/math];[math] 2^{n-1}-1 [/math]]

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

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

Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен [math] 2^n [/math]- |A|.

Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, так как в n-разрядной компьютерной арифметике:

[math] 2^n [/math] - |А| + |А| = 0,

поскольку в компьютерной n-разрядной арифметике [math] 2^n [/math] = 0. Действительно, двоичная запись такого числа состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, то есть n нулей.

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

1. Модуль числа записать в прямом коде в n двоичных разрядах.

2. Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы).

3. К полученному обратному коду прибавить единицу.

Список литературы