diff options
Diffstat (limited to '')
| -rw-r--r-- | vjh3dj.md | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/vjh3dj.md b/vjh3dj.md new file mode 100644 index 0000000..71ffc3a --- /dev/null +++ b/vjh3dj.md @@ -0,0 +1,72 @@ +--- +id: vjh3dj +date: 2026-07-20T09:11:10+0300 +languages: [ru] +aliases: + +reviews: + +tags: +- draft +- knowledge +--- +# Машинные коды чисел + +Для представления знаковых чисел используются специальные способы кодирования, называемые машинными +кодами. Основная проблема, которую они решают - как записать знак числа? + +Обычно старший бит используется как знаковый разряд. Однако возникают различные варианты кодирования +цифровой части числа. + +1. Прямой код +Вариант, при котором старший разряд хранит знак, а оставшиеся - число без каких-либо изменений. + 7 = 0.111 +-5 = 1.101 + +Способ является максимально простым для записи и восприятия человеком, однако обладает недостатком - +для выполнения арифметических операций необходимо дополнительно обрабатывать знаковые разряды для +получения правильного ответа. +Этот недостаток сильно усложняет реализацию сумматоров, однако не сильно влияет на мультипликаторы и +делители. + +Также недостатком является наличие двух нулей: +0 и -0. + +2. Обратный код +Вариант, при котором все биты числа инвертируются, если оно является отрицательным. Если число +положительное, оно записывается без изменений. + 7 = 0.111 +-5 = 1.010 + +Этот способ позволяет не смотреть на знаковый разряд для выполнения суммы. Однако данный код требует +следить за переполнением знакового разряда в ходе сложения - переполнение является коррекцией при +смене знака. + +Также недостатком является наличие двух нулей: +0 и -0. + +3. Дополнительный код +Наиболее распространённый способ хранения отрицательных чисел в современных компьютерах. +Если число положительное - его код записывается без изменения. +Если число отрицательное - инвертируются его биты и к ним прибавляется 1. + 7 = 0.111 +-5 = 1.011 + +В этом коде наблюдается только один ноль: +0 = -0. + +Сложение в этом коде происходит без каких-либо коррекций и обработок знаковых разрядов - числа +складываются словно беззнаковые. + +4. Модифицированный код +Вариант является модификацией дополнительного кода - он имеет два разряда под знак: +- если число положительное: знак 00 +- если число отрицательное: знак 11 + +Эта модификация выполнена для определения переполнений при выполнении арифметических операций. Если +переполнения не имеется - знак результата обязан быть 00 или 11. Если же переполнение произошло, +знак будет 01 или 10 в зависимости от того, в какую сторону произошло переполнение. + +## Up +- [Системы счисления](o6cxpv) + +## Related +- [Двоичное кодирование числовых данных](zk1p84) +- [Двоичная арифметика](86uwkq) |
