如题所述
若是正数,原码=反码=补码,无须取反加1的操作;
.
求负数补码方法是:
将除符号位之外的数值位取反,再在低8位的末位+1,举例如下:
[-46d]原 =1000 0000 0010 1110b
[-46d]反 =1111 1111 1101 0001b
[-46d]补 =1111 1111 1101 0010b
注:后缀d表示十进制数,后缀b表示二进制数。追问
.
求负数补码方法是:
将除符号位之外的数值位取反,再在低8位的末位+1,举例如下:
[-46d]原 =1000 0000 0010 1110b
[-46d]反 =1111 1111 1101 0001b
[-46d]补 =1111 1111 1101 0010b
注:后缀d表示十进制数,后缀b表示二进制数。追问
多谢解答啊,但是我要问的是编程时问题,程序是分高低8位来取反的,但高8位不加一,却是加0,请问该如何解释!
温馨提示:答案为网友推荐,仅供参考
第1个回答 2019-01-04
原16位数未负数,求补码是取反后加1,也就是加
0000 0000 0000 0001h
对应就是低八位取反不带进位加1,高8位取反加进位
0000 0000 0000 0001h
对应就是低八位取反不带进位加1,高8位取反加进位