【问题标题】:Why is the "sign bit" included in the calculation of negative numbers?为什么负数的计算中包含“符号位”?
【发布时间】:2016-02-23 04:03:24
【问题描述】:

我是 Swift 新手,正在尝试学习“有符号整数的移动行为”的概念。我从“快速编程语言 2.1”中看到了这个例子。

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

我经历了几种数字组合,它们都有效,但我似乎没有得到在计算中包含符号位的原因。

要将 -1 添加到 -4,只需执行标准的二进制加法 所有八位(包括符号位),并丢弃任何 完成后不适合八位:

【问题讨论】:

  • 用负数和正数试一试。

标签: swift bitwise-operators signed signed-integer


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 2013-04-30
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多