以前对补码的概念总是似是而非,恰巧又遇到了这方面的知识,又来百度了一下,算是大概想明白了,记录一下。
参阅了这个博主的文章,写的很清楚明白,这里就个人的一点想法总结一下。
- 为什么引入补码可以用加法代替减法?
答:因为在同余的概念下,将负数加上被mod的数参与运算得到的结果和负数直接参与运算得到的结果相同。 - 那么被mod的数是谁?
答:是符号位的左边一位。 - 为什么要规定符号位?
答:要给代表负数的、实际参与运算的数(负数加上被mod的数)留下空间。本质上,是使用了一个大数去代替了负数(这里的大数指比其他正数都大)。 - 为什么会有溢出(某些正+正&负+负情况)
答:因为人为规定了符号位所以才有溢出。在无符号位的概念下看,计算结果没有问题。