为什么"sign bit"被计入负数的计算中?

Why is the "sign bit" included in the calculation of negative numbers?

我是 Swift 的新手,正在尝试学习 "shifting behavior for signed integers" 的概念。我从 "the swift programming language 2.1" 看到这个例子。

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

我体验过几种数字组合,它们都有效,但我似乎不明白在计算中包含符号位的原因。

To add -1 to -4, simply by performing a standard binary addition of all eight bits (including the sign bit), and discarding anything that doesn't fit in the eight bits once you are done:

这不是 Swift 独有的。然而,从历史上看,计算机并没有减法,它们只是加法。要计算 A-B,请对 B 进行二进制补码并将其添加到 A。二进制补码(取反所有位并加 1)意味着最高位对于正数(和零)为 0,对于正数为 1负数。

这称为 2 的补码数学,允许通过简单的运算完成加法和减法。这是许多硬件平台实现算术的方式。你应该更多地研究 2 的补码算法,你想要更深入的理解。