- •Ю никод
- •Предпосылки создания и развитие Юникода
- •Юникод и utf
- •Кодирование целых чисел Прямой код
- •Код со сдвигом
- •Дополнительный код (дополнение до единицы)
- •Дополнительный код (дополнение до двух)
- •Арифметические действия над целыми числами
- •Сложение и вычитание
- •Сложение и вычитание чисел со знаком в обратном коде
- •Сложение и вычитание чисел со знаком в дополнительном коде
- •Умножение и деление
- •Ошибки при выполнении арифметических операций
Кодирование целых чисел Прямой код
При записи числа в прямом коде (sign-and-magnitude method) старший разряд (most significant bit) является знаковым разрядом (sign bit). Если его значение равно нулю, то число положительное, если единице — отрицательное. В остальных разрядах (которые называются цифровыми) записывается двоичное представление модуля числа. Например, число −5 в восьмибитовом типе данных, использующем прямой код, будет выглядеть так: 10000101.
Т
Рис. 1. Нумерация двоичных чисел в прямом представлении
аким способом вДостоинства метода:
получить прямой код числа достаточно просто.
Недостатки:
выполнение арифметических операций с отрицательными числами требует усложнения архитектуры центрального процессора (например, для вычитания невозможно использовать сумматор, необходима отдельная схема для этого);
существуют два нуля ("+0" и "−0"), из-за чего усложняется арифметическое сравнение.
Из-за этого прямой код используется очень редко.
Код со сдвигом
П
ри
использовании кода
со сдвигом (excess-
,
где
;
также говорят biased
representation) целочисленный
отрезок от нуля до
(
—
количество бит) сдвигается влево на
,
а затем получившиеся на этом отрезке
числа последовательно кодируются в
порядке возрастания кодами от 000...0 до
111...1. Например, число −5 в восьмибитовом
типе данных, использующем код со сдвигом,
превратится в −5 + 128 = 123, то есть будет
выглядеть так: 01111011.
По сути, при таком кодировании:
к кодируемому числу прибавляют ;
переводят получившееся число в двоичную систему исчисления.
Можно
получить диапазон значений
.
Достоинства метода:
не требуется усложнение архитектуры процессора;
нет проблемы двух нулей.
Недостатки:
п
Рис. 2 Код со сдвигом.
ри арифметических операциях нужно учитывать смещение, то есть проделывать на одно действие больше (например, после «обычного» сложения двух чисел у результата будет двойное смещение, одно из которых необходимо вычесть);ряд положительных и отрицательных чисел несимметричен.
Из-за необходимости усложнять арифметические операции код со сдвигом для представления целых чисел используется не часто, но зато применяется для хранения порядка вещественного числа.
Дополнительный код (дополнение до единицы)
В качестве альтернативы представления целых чисел может использоваться код с дополнением до единицы (англ. Ones' complement).
Алгоритм получения кода числа:
если число положительное, то в старший разряд (который является знаковым) записывается ноль, а далее записывается само число;
е
Рис. 3. Нумерация двоичных чисел в представлении c дополнением до единицы. В отличие от кода со сдвигом, нулю соответствуют коды 00...000 и 11...111
сли число отрицательное, то код получается инвертированием представления модуля числа (получается обратный код)Пример: переведём число −13 в восьмибитовый код. Прямой код модуля −13 --- 00001101, инвертируем и получаем 11110010. Для получения из дополнительного кода самого числа достаточно инвертировать все разряды кода.
Таким способом можно получить диапазон значений .
Достоинства метода:
Простое получение кода отрицательных чисел
Недостатки метода:
выполнение арифметических операций с отрицательными числами требует усложнения архитектуры центрального процессора
существуют два нуля ("+0" и "−0")
