Изменения

Перейти к: навигация, поиск
м
Нет описания правки
Таким способом в <tex> n </tex>-битовом типе данных можно представить диапазон чисел <tex> [-2^{n-1} + 1; 2^{n-1} - 1] </tex>.
'''=====Достоинства метода:'''=====
*получить прямой код числа достаточно просто.
'''=====Недостатки:'''=====
*выполнение арифметических операций с отрицательными числами требует усложнения архитектуры центрального процессора (например, для вычитания невозможно использовать сумматор, необходима отдельная схема для этого);
Можно получить диапазон значений <tex> [-2^{n-1}; 2^{n-1} - 1]</tex>.
'''=====Достоинства метода:'''=====
*не требуется усложнение архитектуры процессора;
*нет проблемы двух нулей.
'''=====Недостатки:'''=====
*при арифметических операциях нужно учитывать смещение, то есть проделывать на одно действие больше (например, после «обычного» сложения двух чисел у результата будет двойное смещение, одно из которых необходимо вычесть);
Таким способом можно получить диапазон значений <tex> [-2^{n-1}+1; 2^{n-1} - 1] </tex>.
'''=====Достоинства метода:'''=====
*Простое получение кода отрицательных чисел
'''=====Недостатки метода:'''=====
*выполнение арифметических операций с отрицательными числами требует усложнения архитектуры центрального процессора
Алгоритм получения дополнительного кода числа:
*если число положительноенеотрицательное, то в старший разряд записывается ноль, далее записывается само число;
*если число отрицательное, то все биты модуля числа инвертируются, то есть все единицы меняются на нули, а нули — на единицы, к инвертированному числу прибавляется единица, далее к результату дописывается знаковый разряд, равный единице.
Можно получить диапазон значений <tex> [-2^{n-1}; 2^{n-1} - 1] </tex>.
'''=====Достоинства метода:'''=====
*возможность заменить арифметическую операцию вычитания операцией сложения и сделать операции сложения одинаковыми для знаковых и беззнаковых типов данных, что существенно упрощает архитектуру процессора и увеличивает его быстродействие;
*нет проблемы двух нулей.
'''=====Недостатки:'''=====
*ряд положительных и отрицательных чисел несимметричен, но это не так важно: с помощью дополнительного кода выполнены гораздо более важные вещи, желаемые от способа представления целых чисел.
37
правок

Навигация