Обернений код

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Обернений код 8-бітних цілих чисел
Біти Значення
без знаку
Обернений
код
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
======   ====
1 0011     19 3

Додавання у випадку, якщо одне з чисел від'ємне, відрізняється тим, що якщо утворюється біт переносу за межами представлення, то до результату додається одиниця.

  0001 0011     19
+ 1111 1100     −3
===========   ====
1 0000 1111     15    — Утворився кільцевий перенос.
+ 0000 0001      1    — Додати перенос до результату.
===========   ====
  0001 0000     16    — Правильний результат (19 + (−3) = 16).

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. Число зі знаком: обернений код (англ.)
  2. Арифметика оберненого і доповняльного кодів (англ.)