Сб. Сен 7th, 2024

Прибавление или вычитание произвольного числа n соответствует n единичным шагам вдоль кольца от исходного числа в нужном направлении.

Так, в 8-разрядном беззнаковом типе:

254 + 4 = 2,
200 — 255 = 201,

а в 16-разрядном знаковом типе:

32760 + 10 = -32766,
-32760 — 10 = 32766.

Это можно проверить, выполняя действия сложения в двоичной k-разрядной арифметике.

Вычитание можно заменить на сложение с отрицательным числом, представляя последнее как дополнение его модуля до 2k вне зависимости от наличия знакового бита у типа (у беззнаковых типов дополнительный код для отрицательных чисел, по модулю превосходящих 2k-1, будет иметь 0 в самом левом бите, что для знаковых типов недопустимо). Так, в 8-разрядном беззнаковом типе для приведенных примеров мы получим следующее:

256
11111110
+ 4
+ 00000100
= 254 + 4
= 1100000010
Результат:
00000010 = 2

От content