因为机器使用补码, 所以对于编程中常用到的32位int类型, 可以表示范围是: [-231, 231-1] 因为第一位表示的是符号位.而使用补码表示时又可以多保存一个最小值.
补码的加减法运算
本文内容参考自王达老师的《深入理解计算机网络》一书
一、补码加法:
1、补码的加法运算
两个机器数相加的补码可以先通过分别对两个机器数求补码,然后再相加得到,在采用补码形式表示时,进行加法运算可以把符号位和数值位一起进行运算(若符号位有进位,导致了益出,则直接舍弃),结果为两数之和的补码形式。
示例1:求两个十进制数的和 35+18。
首先,规定字长是8位,也就是只能用8位二进制表示。
35的原码:00100011。
18的原码:00010010。
因为35和18都是正数,所以补码和原码完全一致。
35的补码:00100011。
18的补码:00010010。
因为补码是可以连同符号位一起运算,所以运算法则等同于无符号二进制运算:
00100011---35二进制表示 00010010---18二进制表示 00110101-----转换成10进制是53。结果正确!
示例2:求两个十进制数的和 35+(-18)。
同示例1一样,只能用8位表示。