为什么“符号位”包含在负数的计算中?

时间:2016-02-23 04:03:24

标签: swift bitwise-operators signed signed-integer

我是Swift的新手,正在尝试学习“改变签名整数行为”的概念。我从“swift编程语言2.1”中看到了这个例子。

我的问题是:为什么符号位也包含在计算中?

我经历过几个数字组合并且它们都有效,但我似乎没有理由在计算中包含符号位。

  

要添加-1到-4,只需执行标准二进制加法即可   全部八位(包括符号位),并丢弃任何内容   一旦完成,就不适合八位:

enter image description here

2 个答案:

答案 0 :(得分:1)

这不是Swift特有的。然而,从历史上看,计算机并没有减去,他们只是补充说。要计算AB,请执行B的二进制补码并将其添加到A.两个补码(取消所有位并加1)意味着正数的最高位为0 (和零),或负数的1。

答案 1 :(得分:1)

这称为2的恭维数学,允许通过简单的操作完成加法和减法。这是许多硬件平台实现算术的方式。您应该更多地了解2的恭维算术,您需要更深入的理解。