Binary 什么是1';补语加法?

Binary 什么是1';补语加法?,binary,integer-arithmetic,Binary,Integer Arithmetic,我看到上面提到了“1的补语加法”。但我没有找到它的官方定义。有人能告诉我它的定义吗?1的补码是一种数字表示法,如果要取一个数字的负数,只需将所有位翻转即可。这种格式的加法只需要表示数字本身,然后执行二进制加法。在one的补码运算中,最后一个进位被环绕并添加到结果中(结束进位)。这在以下章节中也有描述: 在2的补码机上,1的补码和必须通过“端到端进位”来计算,即,来自最高有效位的任何溢出都被添加到最低有效位 在伪代码中,可以这样实现: Function Sum(a: Int16, b: Int16


我看到上面提到了“1的补语加法”。但我没有找到它的官方定义。有人能告诉我它的定义吗?

1的补码是一种数字表示法,如果要取一个数字的负数,只需将所有位翻转即可。这种格式的加法只需要表示数字本身,然后执行二进制加法。

在one的补码运算中,最后一个进位被环绕并添加到结果中(结束进位)。这在以下章节中也有描述:

在2的补码机上,1的补码和必须通过“端到端进位”来计算,即,来自最高有效位的任何溢出都被添加到最低有效位

在伪代码中,可以这样实现:

Function Sum(a: Int16, b: Int16): Int16 {
    c: Int32 := a + b
    return (c AND 0xFFFF) + (c >> 16)
}
例子 我猜,RFC1071中使用1的补码算法的原因是,在20世纪70年代开发互联网校验和时,许多计算机系统都使用了它。Wikipedia页面描述了当位表示有符号整数时,为什么需要结束循环进位

   F000
 + 1009
-------
   0009
 + 0001 // add carry
-------
   000A