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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Код со сдвигом)
Строка 41: Строка 41:
 
==Список литературы==
 
==Список литературы==
 
*[http://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4_%28%D0%BF%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%BB%D0%B0%29 Wikipedia_Дополнительный_код_(представление_числа)]
 
*[http://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4_%28%D0%BF%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%BB%D0%B0%29 Wikipedia_Дополнительный_код_(представление_числа)]
 +
 +
[[Категория: Дискретная математика и алгоритмы]]
 +
[[Категория: Кодирование информации]]

Версия 21:24, 9 октября 2011

Прямой код

При записи числа в прямом коде старший разряд является знаковым разрядом. Если его значение равно 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 нулей.

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

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

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