== Прямой код ==
При записи числа в '''прямом коде''' (''sign-and-magnitude method'') старший разряд (''most significant bit'') является знаковым разрядом (''sign bit''). Если его значение равно 0нулю, то число положительное, если 1 единице — отрицательное. В остальных разрядах (которые называются цифровыми) записывается двоичное представление модуля числа.
Таким способом в <tex> n </tex>-битовом типе данных можно представить диапазон чисел <tex> [-2^{n-1} + 1; 2^{n-1} - 1] </tex>.
== Код со сдвигом ==
При использовании '''кода со сдвигом''' (''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.
По сути, при таком кодировании:
== Дополнительный код ==
Для Чаще всего для представления отрицательных чисел используется '''дополнительный код''' (дополнение до двух, англ. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие''two's complement'').
Дополнительный код отрицательного Алгоритм получения дополнительного кода числа А, хранящегося в n ячейках, равен <tex> 2^n-</tex> |A|.:
Дополнительный *если число положительное, то в старший разряд (который является знаковым) записывается ноль, далее записывается само число;*если число отрицательное, то все биты числа инвертируются, то есть все единицы меняются на нули, а нули — на единицы (получается '''обратный код представляет собой дополнение модуля отрицательного числа А до 0'''), к инвертированному числу прибавляется единица, далее к результату дописывается знаковый разряд, так как в n-разрядной компьютерной арифметике:равный единице.
Также дополнительный код отрицательного числа <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>.
поскольку в компьютерной n-разрядной арифметике <tex> 2^n </tex> = 0. ДействительноДополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, двоичная запись такого числа состоит из одной единицы что существенно упрощает работу процессора и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, то есть n нулейувеличивает его быстродействие.
Для получения дополнительного кода отрицательного ==Список литературы==*[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 Википедия: Дополнительный код (представление числа можно использовать довольно простой алгоритм:)]
* Модуль числа записать в прямом коде в n двоичных разрядах. * Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы). * К полученному обратному коду прибавить единицу. ==Список литературы==*[http://ruen.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_Дополнительный_код_(представление_числа)Signed_number_representations Wikipedia: Signed number representations]
[[Категория: Дискретная математика и алгоритмы]]
[[Категория: Представление информации]]