Обернений код
Біти | Значення без знаку |
Обернений код |
---|---|---|
0111 1111 | 127 | 127 |
0111 1110 | 126 | 126 |
0000 0010 | 2 | 2 |
0000 0001 | 1 | 1 |
0000 0000 | 0 | 0 |
1111 1111 | 255 | −0 |
1111 1110 | 254 | −1 |
1000 0010 | 130 | −125 |
1000 0001 | 129 | −126 |
1000 0000 | 128 | −127 |
Обернений код — це спосіб представлення двійкових цілих чисел зі знаком.
Для переведення десяткового числа в обернений код спочатку необхідно перевести його у двійкове представлення не зважаючи на знак, потім, якщо число від'ємне, обернути всі біти (замінити 0 на 1 і навпаки).[1] З точністю до сталої (-1) обернений код числа поводиться як від'ємне до початкового числа з операцією додавання.
Цей код не отримав такого розповсюдження як доповняльний, через деяке ускладнення операції додавання і два коди для числа 0.
Додавання додатних чисел виконується так само як і в доповняльному коді. У випадку якщо перенесена одиничка виходить за межі представлення, то ми на неї просто не зважаємо.[2]
0001 0110 22 + 0000 0011 3 =========== ==== 0001 1001 25 |
0111 7 + 1100 12 ====== ==== |
Додавання у випадку, якщо одне з чисел від'ємне, відрізняється тим, що якщо утворюється біт переносу за межами представлення, то до результату додається одиниця.
0001 0011 19 + 1111 1100 −3 =========== ==== 1 0000 1111 15 — Утворився кільцевий перенос. + 0000 0001 1 — Додати перенос до результату. =========== ==== 0001 0000 16 — Правильний результат (19 + (−3) = 16). |
- ↑ Число зі знаком: обернений код (англ.)
- ↑ Арифметика оберненого і доповняльного кодів (англ.)