Почему "знаковый бит" включен в расчет отрицательных чисел?

Я новичок в Swift и пытаюсь выучить концепцию "изменения поведения для целых чисел со знаком". Я видел этот пример из "языка программирования Swift 2.1".

Мой вопрос: почему знаковый бит также включен в расчет?

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

Чтобы добавить -1 к -4, просто выполните стандартное двоичное добавление всех восьми битов (включая знаковый бит) и отбросьте все, что не помещается в восемь битов, как только вы закончите:

введите описание изображения здесь

2 ответа

Решение

Это не уникально для Swift. Тем не менее, исторически компьютеры не вычитали, они просто добавляли. Чтобы вычислить AB, сделайте двоичное дополнение к B и добавьте его к A. Двойное дополнение (исключите все биты и добавьте 1) означает, что бит высшего порядка будет 0 для положительных чисел (и ноль) или 1 для отрицательные числа.

Это называется математикой комплимента 2 и позволяет выполнять сложение и вычитание с помощью простых операций. Это способ, которым многие аппаратные платформы реализуют арифметику. Вы должны больше смотреть на арифметику 2 комплиментов, если вы хотите более глубокого понимания.

Другие вопросы по тегам