Вы знаете слова из песни The Jackson 5, «ABC»? Я собираюсь показать вам, что дополнение двух почти так же просто, как… 1, 2, 3.

Когда мы были маленькими, мы научились считать в десятичной системе счисления (основание 10), начиная с 0.

   0
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  ..
  ..
  99
 100
 101

Что произойдет, когда мы дойдем до числа 10? Самая правая цифра переходит в 0, и мы добавляем 1 слева, чтобы начать разряды десятков.

Каждая цифра слева увеличивается на другую степень.

Сотые места + Десятки + Единичные места

10² + 10¹ + 10⁰

Проиллюстрируем числом 108:

(10² * 1) + (10¹ * 0) + (10⁰ * 8) = 108

Теперь поговорим о двоичном.

Ваш компьютер хранит все в виде последовательности нулей и единиц, включая числа, и работает в двоичном формате (с основанием 2).

… + 2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2¹ + 2⁰

Вы видите, что показатель степени увеличивается на 1 каждый раз слева?

Число 108 в базе 10 выглядело бы иначе в базе 2.

(2⁶ * 1) +(2⁵ * 1) + (2⁴ * 0) + (2³ * 1) + (2² * 1) + (2¹ * 0) + (2⁰ * 0) = 1101100

Base 10: 108
Base 2: 1101100

Хорошо, теперь ты попробуй! Выберите число, любое число и сделайте то же самое.

Так что такое дополнение до двух?

Дополнение до двух указывает на то, как числа хранятся в памяти. Самая маленькая память - это немного. И каждый бит может быть 0 для «выключено» или 1 для «включено».

Чтобы увидеть, как компьютер хранит положительное число, запишите его в двоичном формате. Возьмем для примера число 28 (основание 10).

Чтобы записать это в двоичном формате, я использую этот метод:

  1. Найдите наибольшее число, не превышающее моего числа.

2⁵ + 2⁴ + 2³ + 2² + 2¹ + 2⁰

2⁵ равно 32, а это больше 28, поэтому давайте попробуем следующее наименьшее число справа.

2⁴ равно 16, и оно не превышает 28. Тогда это моя отправная точка, и я отмечу 1 под ней, чтобы указать, что бит включен.

2⁴
1

2. Вычислите, какие значения от битов вправо при сложении с 2⁴ будут равны 28. Я, по сути, выясняю, какие биты включить, а какие оставить. Когда я закончу, у меня будет двоичное число.

2⁴ + 2³ + 2² + 2¹ + 2⁰
1….. 1…..1…..0…..0

(2⁴ * 1) + (2³ * 1) + (2² * 1) + (2¹ * 0) + (2⁰ * 0)

Base 10: 28
Base 2 (binary): 11100

Это сравнимо с внесением изменений в кого-то…

Представьте, что вы продаете что-то за 27 центов. Покупатели дают вам купюру в 1 доллар.

У вас есть выбор вернуть сдачу в четвертях, десятицентовиках, пятаках и пенни. Вы можете вернуть сдачу всеми пенни (73 цента), но это будет проблемой и, скорее всего, расстроит покупателей. Итак, давайте вернем сдачу, начиная с самой крупной монеты. Чтобы равняться сдаче в 73 цента, вы даете им:

2 четверти, 2 центов, 0 никель и 3 пенни.

Вы видели, как хранятся положительные числа, а как насчет отрицательных чисел?

Чтобы найти два дополнения, переверните все биты и добавьте 1.

Итак, давайте возьмем то же число 28 в базе 10 и преобразуем его в двоичную форму:

00011100

Теперь переворачиваем биты:

11100011

И добавляем 1:

11100100

Base 10: 28
28 in binary form: 00011100
Base 10: -28
-28 in binary form: 11100100

Теперь вы знаете, как положительные и отрицательные числа хранятся в памяти. Это почти так же просто, как A, B, C…. 1, 2, 3….