Изменения

Перейти к: навигация, поиск
Нет описания правки
Недостатки:
*существуют два нуля ("+0" и "-0"), из-за чего усложняется арифметическое сравнение;*выполнение арифметических операций с отрицательными числами требует усложнения архитектуры центрального процессора (например, для вычитания невозможно использовать сумматор, необходима отдельная схема для этого);*существуют два нуля ("+0" и "-0"), из-за чего усложняется арифметическое сравнение.
Из-за этого прямой код используется в основном только для записи неотрицательных чисел.
== Код со сдвигом ==
При использовании '''кода со сдвигом''' (''excess-''<tex> K </tex>, где <tex> K = 2^{n-1} </tex>; также говорят ''biased representation'') мы сдвигаем целочисленный отрезок от нуля до <tex> 2^{n} </tex> (<tex> n </tex> — количество бит) влево на <tex> 2^{n-1} </tex>, а затем последовательно кодируем получившееся на этом отрезке числа в порядке возрастания кодами от 000...0 до 111...1.
По сути, при таком кодировании:
 
*к кодируемому числу прибавляем <tex> 2^{n-1} </tex>;
*переводим получившееся число в двоичную систему исчисления.
Достоинства метода:
*нет проблемы двух нулей;*не требуется усложнение архитектуры процессора;*нет проблемы двух нулей.
Недостатки:
Также дополнительный код отрицательного числа <tex> А </tex>, хранящегося в <tex> n </tex> битах, равен <tex> 2^n - |A|</tex>. По сути, дополнительный код представляет собой дополнение <tex> |A| </tex> до <tex> 0 </tex>: так как в <tex> n </tex>-разрядной арифметике <tex> 2^{n} = 0 </tex> (двоичная запись этого числа состоит из единицы и <tex> n </tex> нулей, а в <tex> n </tex>-разрядную ячейку помещаются только <tex> n </tex> младших разрядов, то есть <tex> n </tex> нулей), то верно равенство <tex> 2^n - |A| + |A| = 0 </tex>.
Дополнительный Для получения из дополнительного кода самого числа нужно инвертировать все разряды кода и прибавить к нему единицу. Можно проверить правильность, сложив дополнительный код позволяет с самим числом: результат должен быть равен <tex> 2^n </tex>. Можно получить диапазон значений <tex> [-2^{n-1}; 2^{n-1} - 1]</tex>. Достоинства метода: *возможность заменить арифметическую операцию вычитания операцией сложенияи сделать операции сложения одинаковыми для знаковых и беззнаковых типов данных, что существенно упрощает работу архитектуру процессора и увеличивает его быстродействие;*нет проблемы двух нулей. Недостатки: *ряд положительных и отрицательных чисел несимметричен.
==Список литературы==
*[http://en.wikipedia.org/wiki/Signed_number_representations Wikipedia: Signed number representations]
 
*Эндрю Таненбаум «Архитектура компьютера», 5-е изд., стр. 739—741
[[Категория: Дискретная математика и алгоритмы]]
[[Категория: Представление информации]]
418
правок

Навигация