1.补码与他的补数
在二进制的计算中,由于只有加法器(也称为模2^n加法器),所以X-Y会转化为X+(-Y)。
那么Y和(-Y)之间如何转换呢?为什么这么转换呢?
这就涉及补数,以0111为例,他的补数为[1000+1]也就是1001,转换规则:各位取反+1
因为0111+1001=1 0000,也就是mod2^4。
好比时钟的mod为12,假设现在八点,想转动到6点,既可以逆时针转2个单位(8-2)mod12=6,也可以顺时针转10个单位(8+10)mod12=6。
2. 负数的补码与他的真值
以(-15)为例
[-15]原码=1000 1111 最高位位符号位
[-15]补码=1111 0001 观察:符号位不变,最低位直至第一个1不变,中间全部取反
3. 位扩展
0扩展
0扩展即高位补0
以0111(+7)为例扩展8bit为0000 0111 +7
当为负数1011(-3)时,扩展为0000 1011 +11 显然负数这么扩展会改变其真值
位扩展只适用于无符号数
符号扩展
正数则高位补0,负数则高位补1