有关二进制补码运算的问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:11:24
完成下列减法运算,注意下列数位二进制补码,并指出运算结果有无溢出?

11111-10000=? 101-101000=?
不好意思,好像没有说清楚,11111和10000以及101和101000已经是补码了,而且问这些补码在求补的时候是否溢出?
而且问题并没有说明一定是8位的,为什么一定要变成8位的呢?

还没有说清楚吗?上面的二进制数已经是补码了,不要再进行求补运算了,要完成的是补码运算,这些补码是由原码变换的,问的是由原码变成这些补码时是否溢出?

补码不能做减法运算吗?
由补码可以看出从原码求补码时是否溢出

-10000变成1000,0000,0001,0000的形式
反码为1111,1111,1110,1111
补码为1111,1111,1111,0000
相加结果为1111,1111,1111,1111(不溢出)

-101000变成1000,0000,0010,1000
反码为1111,1111,1101,0111
补码为1111,1111,1101,1000
相加结果为1111,1111,1101,1101(不溢出)

注释:基本整形占用2个字节16位,计算机中没有减法,减去一个数,是通过加上它的补码的形式实现的.
关于溢出:二进制应看是否超出它的存放空间大小(注意最高位是符号位,1为负,0为正),十进制看是否在-32767--32768之间.

本人最开始当成8位算的,不好意思.我刚学,掌握的不好.

哦,晕,原码转补码是否益出,你都没说原码,只给出补码,怎么知道有没有溢出,那你写上面的算术式做什么?既然是补码,不是应该做加法吗?