summaryrefslogtreecommitdiff
path: root/vjh3dj.md
diff options
context:
space:
mode:
authorLibravatar Mora Unie Youer <[email protected]>2026-07-20 19:14:22 +0300
committerLibravatar Mora Unie Youer <[email protected]>2026-07-20 19:14:22 +0300
commit902f9aa4c18c07969ca085bd4e0b719907d3a6c1 (patch)
tree4ba28299ba170526437422fc48cde1b251ef8e5f /vjh3dj.md
parentsnapshot: 2026-07-17 (diff)
downloadzk-902f9aa4c18c07969ca085bd4e0b719907d3a6c1.tar.gz
zk-902f9aa4c18c07969ca085bd4e0b719907d3a6c1.tar.bz2
zk-902f9aa4c18c07969ca085bd4e0b719907d3a6c1.tar.lz
zk-902f9aa4c18c07969ca085bd4e0b719907d3a6c1.tar.xz
zk-902f9aa4c18c07969ca085bd4e0b719907d3a6c1.tar.zst
zk-902f9aa4c18c07969ca085bd4e0b719907d3a6c1.zip
snapshot: 2026-07-20
Diffstat (limited to 'vjh3dj.md')
-rw-r--r--vjh3dj.md72
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)