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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Код со сдвигом)
(Код со сдвигом)
Строка 14: Строка 14:
 
== Код со сдвигом ==
 
== Код со сдвигом ==
 
Код со сдвигом почти не отличается от прямого кода, за исключением представления в нем отрицательных чисел и нуля.  
 
Код со сдвигом почти не отличается от прямого кода, за исключением представления в нем отрицательных чисел и нуля.  
Ноль в отличии от прямого кода в коде со сдвигом единственен.  
+
Ноль в отличии от прямого кода в коде со сдвигом единственен. В следствии этого код со сдвигом более удобен для арифметических действий.  
 
В 8 битной кодировке:
 
В 8 битной кодировке:
 
*ноль 10000000
 
*ноль 10000000

Версия 21:06, 26 октября 2010

Эта статья находится в разработке!

Прямой код

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

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

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

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

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

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

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

  • ноль 10000000
  • Положительные числа последовательно кодируются от 10000001 до 11111111
  • Отрицательные от 00000000 до 01111111 (при этом 00000000- наименьшее отрицательное число, а 01111111=-1)

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

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

Дополнительный код отрицательного числа А, хранящегося в 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. К полученному обратному коду прибавить единицу.