Различные способы представления целого числа со знаком

Опубликовано: 20 Сентября, 2022

Целое число со знаком — это целое число, с которым связан положительный знак «+» или отрицательный знак «-». Поскольку компьютер понимает только двоичные данные, необходимо представлять эти целые числа со знаком в двоичной форме.

В двоичном формате целое число со знаком может быть представлено тремя способами:

  1. Подписанный бит.
  2. 1 дополнение.
  3. 2 дополнения.

Давайте посмотрим, почему дополнение 2 считается лучшим методом.

Бит со знаком Представление

В методе целочисленного представления со знаком соблюдаются следующие правила:

1. MSB (самый старший бит) представляет собой знак целого числа.
2. Величина представлена другими битами, отличными от MSB, т.е. (n-1) битами, где n — номер. бит.
3. Если число положительное, MSB равен 0, иначе 1.
4. Диапазон целочисленного представления n-битного числа со знаком задается как от –(2^{n-1}-1) до (2)^{n-1}-1.

Пример:

Let n = 4

Range:
 –(2^{4-1}-1)    to 2^{4-1}-1    
= -(2^{3}-1)    to 2^{3}-1  
= -(7)   to+7

For 4 bit representation, minimum value=-7 and maximum value=+7

Представление бита со знаком:

Положительные числа

Знак Величина Десятичное представление
0 0 0 0 +0
0 0 0 1 +1
0 0 1 0 +2
0 0 1 1 +3
0 1 0 0 +4
0 1 0 1 +5
0 1 1 0 +6
0 1 1 1 +7

Отрицательные числа

Знак Величина Десятичное представление
1 0 0 0 -0
1 0 0 1 -1
1 0 1 0 -2
1 0 1 1 -3
1 1 0 0 -4
1 1 0 1 -5
1 1 1 0 -6
1 1 1 1 -7

Недостатки:

1. Для 0 существует два представления: -0 и +0, чего быть не должно, поскольку 0 не является ни -ve, ни +ve.
2. Из 2^n бит для представления мы можем использовать только 2^{n-1} бит.
3. Числа идут не в циклическом порядке, т.е. после наибольшего числа (в этом, например, +7) следующее число не является наименьшим числом (в этом, например, +0).
4. Для отрицательных чисел расширение со знаком не работает.

Пример:
Подписанное расширение для +5

Подписанное расширение для -5

5. Как мы можем видеть выше, для представления +ve, если 4 бита расширяются до 5 бит, необходимо просто добавить 0 в MSB.
6. Но если то же самое сделать в -ve представлении, мы не получим то же число. т.е. 10101 ≠ 11101.

Дополнение до 1 для целого числа со знаком

В представлении дополнения 1 используются следующие правила:

1. Для +ve чисел правила представления такие же, как и для целочисленного представления со знаком.
2. Для -ve чисел мы можем следовать любому из двух подходов:

  • Запишите число +ve в двоичном формате и возьмите его дополнение до 1.

1’s complement of 0 = 1 and 1’s complement of 1 = 0 

Example:
(-5) in 1’s complement: 
+5 = 0101
-5 = 1010                 

  • Напишите беззнаковое представление 2^n-1-X вместо –X.

Example:
–X = -5      for n=4
2^4-1-5=10 ->1010(Unsigned)

3. Диапазон целочисленного представления n-битного числа с дополнением до 1 задается как от –(2^{n-1}-1) до 2^{n-1}-1.

Представление дополнения 1:

Положительные числа
Знак Величина Число
0 0 0 0 +0
0 0 0 1 +1
0 0 1 0 +2
0 0 1 1 +3
0 1 0 0 +4
0 1 0 1 +5
0 1 1 0 +6
0 1 1 1 +7
Отрицательные числа
Знак Величина Число
1 0 0 0 -7
1 0 0 1 -6
1 0 1 0 -5
1 0 1 1 -4
1 1 0 0 -3
1 1 0 1 -2
1 1 1 0 -1
1 1 1 1 -0

Недостатки :

  1. Для 0 есть два представления: -0 и +0, чего не должно быть, поскольку 0 не является ни -ve, ни +ve.
  2. Из 2^n бит для представления мы можем использовать только 2^{n-1} бит.

Достоинства над битовым представлением со знаком:

1. Числа идут в циклическом порядке, т.е. после наибольшего числа (в этом, например, +7) следующее число является наименьшим числом (в этом, например, -7).
2. Для отрицательного подписанного расширения работает.

Пример: подписанное расширение для +5

Подписанное расширение для -5

3. Как видно выше, для представления +ve, а также -ve, если 4 бита расширяются до 5 бит, необходимо просто добавить 0/1 соответственно в MSB.

2-е дополнение к представлению

В представлении дополнения 2 используются следующие правила:

1. Для +ve чисел правила представления такие же, как и для целочисленного представления со знаком.
2. Для -ve чисел есть два разных способа представления числа.

  • Напишите беззнаковое представление 2^nX вместо –X в n-битном представлении.

Example:
(-5) in 4-bit representation
 2^4-5=11   -→1011(unsigned)

  • Напишите представление +X и возьмите дополнение до 2.

To take 2’s complement simply take 1’s complement and add 1 to it.    

Example:
(-5) in 2’s complement
(+5) = 0101 
1’s complement of (+5) = 1010
 Add 1 in 1010:  1010+1 = 1011
Therefore (-5) = 1011

3. Диапазон представления n-бит от –(2^{n-1}) до (2)^{(n-1)-1}.

Представление дополнения до 2 (4 бита)

Достоинства:

  1. Отсутствие двусмысленности в представлении 0.
  2. Числа идут в циклическом порядке, т.е. после +7 идет -8.
  3. Подписанное расширение работает.
  4. Диапазон чисел, которые можно представить с помощью дополнения до 2, очень велик.

Из-за всех вышеперечисленных достоинств представления в дополнении до 2 целого числа со знаком, двоичные числа представляются с использованием метода дополнения до 2 вместо знакового бита и дополнения до 1.