Почему "знаковый бит" включен в расчет отрицательных чисел?
Я новичок в Swift и пытаюсь выучить концепцию "изменения поведения для целых чисел со знаком". Я видел этот пример из "языка программирования Swift 2.1".
Мой вопрос: почему знаковый бит также включен в расчет?
Я сталкивался с несколькими комбинациями чисел, и все они работают, но у меня, кажется, нет причин для включения знака бита в расчет.
Чтобы добавить -1 к -4, просто выполните стандартное двоичное добавление всех восьми битов (включая знаковый бит) и отбросьте все, что не помещается в восемь битов, как только вы закончите:
2 ответа
Это не уникально для Swift. Тем не менее, исторически компьютеры не вычитали, они просто добавляли. Чтобы вычислить AB, сделайте двоичное дополнение к B и добавьте его к A. Двойное дополнение (исключите все биты и добавьте 1) означает, что бит высшего порядка будет 0 для положительных чисел (и ноль) или 1 для отрицательные числа.
Это называется математикой комплимента 2 и позволяет выполнять сложение и вычитание с помощью простых операций. Это способ, которым многие аппаратные платформы реализуют арифметику. Вы должны больше смотреть на арифметику 2 комплиментов, если вы хотите более глубокого понимания.