Представление целых чисел: прямой код, код со сдвигом, дополнительный код — различия между версиями
(→Код со сдвигом) |
(→Дополнительный код) |
||
Строка 23: | Строка 23: | ||
Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие. | Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие. | ||
− | Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен <tex> 2^n </tex> | + | Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен <tex> 2^n-</tex> |A|. |
Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, так как в n-разрядной компьютерной арифметике: | Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, так как в n-разрядной компьютерной арифметике: | ||
− | <tex> 2^n </tex> | + | <tex> 2^n -</tex> |А| + |А| = 0, |
поскольку в компьютерной n-разрядной арифметике <tex> 2^n </tex> = 0. Действительно, двоичная запись такого числа состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, то есть n нулей. | поскольку в компьютерной n-разрядной арифметике <tex> 2^n </tex> = 0. Действительно, двоичная запись такого числа состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, то есть n нулей. | ||
Строка 33: | Строка 33: | ||
Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм: | Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм: | ||
− | + | * Модуль числа записать в прямом коде в 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 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_Дополнительный_код_(представление_числа)] |
Версия 04:52, 27 ноября 2010
Содержание
Прямой код
При записи числа в прямом коде старший разряд является знаковым разрядом. Если его значение равно 0 — то число положительное, если 1 — то отрицательное. В остальных разрядах (которые называются цифровыми разрядами) записывается двоичное представление модуля числа.
Применение прямого кода
Прямой код используется в основном только для записи неотрицательных чисел, т.к. получить прямой код такого числа достаточно просто. Однако, у прямого кода есть ряд недостатков:
- в прямом коде существует два нуля ("+" и "-" ноль)
- крайне неудобно выполнять арифметические операции с отрицательными числами
Из-за недостатков выполнение арифметических операций над числами в прямом коде потребует сложной архитектуры центрального процессора и в общем является неэффективным.
Код со сдвигом
С помощью кода со сдвигом можно представить
чисел. Суть кода в том, что мы сдвигаем целочисленный отрезок (от нуля до ) влево на , а затем последовательно кодируем получившееся на этом отрезке числа , в порядке возрастания, кодами от 000...0 до 111...1Принцип кодирования следующий:
- К кодируемому числу прибавляем
- Переводим получившееся число в двоичную систему исчисления.
Диапазон значений [
; ]Дополнительный код
Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие.
Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен
|A|.Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, так как в n-разрядной компьютерной арифметике:
|А| + |А| = 0,
поскольку в компьютерной n-разрядной арифметике
= 0. Действительно, двоичная запись такого числа состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, то есть n нулей.Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм:
- Модуль числа записать в прямом коде в n двоичных разрядах.
- Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы).
- К полученному обратному коду прибавить единицу.