我想知道计算机中的加法过程。
计算机如何将两个数字相加?难道是电子魔法?它是一种算法吗?
另外,我想知道为什么将 1 添加到最大整数 (...111) 会导致零 (...000)?假设 ...111 是该计算机体系结构中 max int 的二进制表示形式。
谢谢。
最佳答案
它的结果并不总是 0。如果您在大多数表示中使用有符号整数类型,您最终会得到最小值值,从(比如说)
01111111 (127)
10000000 (-127)
在某些架构上 - 至少在某些模式下 - 这种溢出不会给出值,它会导致错误。当它确实给出一个值时,它基本上仍然只是二进制计数。假设您有一个 8 位无符号整数值...最后几个值是
11111100
11111101
11111110
11111111
那么合乎逻辑的下一步就是进入下一个位:
100000000
所以计算机有效地做到了这一点 - 但随后丢弃了新的最高位,只保留了最低 8 位(因为它是 8 位类型)。
不过,您不必使用计算机即可看到这种效果。假设您的汽车中有一个模拟里程表 - 带有多个“轮子”的那种。当您到达其范围的末尾时,它就会环绕:
99997
99998
99999
00000 // Overflow!
关于binary - 在计算机中,为什么最大整数加一会导致零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679973/