狼有在线
春芽
共回答了21个问题采纳率:95.2% 举报
char为字符型数据(数据长度为8位二进制数),也可参与整数运算,
计算机的有符号数(整型数)是以补码形式表示的.
对于8位二进制数表示的补码,最高位符号位,其余数值位,如
(+8)的补码=0000 1000
(-8)的补码=1111 1000 //方法是:+8的原码求反加1
所以,最大正数表示为:0111 1111,即2^7-1
最小负数表示为:1000 0000,即-2^7
1年前
追问
9
东方奋强
举报
你的意思是说-2^7的补码是1000_0000吗?计算-2^7的补码时已经产生了溢出,所以应该不能表示-2^7吧?
举报
狼有在线
你写错了,是1000 0000 八位二进制,-2^7 不可能产生溢出,计算机之所以采用补码编码,就是要充分利用所有编码资源,原因如下(都使用用8位二进制数): 原码表示,对于8位二进制数,只能使用255个编码,即 (-)1111 1111 ~ (+)0111 1111,其中数字0有两个编码:(-)1000 0000 和(+)0000 0000,用于计算时不方便,复杂,所以采用补码: 负数的补码表示范围:(-)1000 0000 ~ (-)1111 1111,注意: 1000 0000 这是绝对值最大数,即-128,这是绝对值最小的数,1111 1111,即-1; 正数的补码表示范围:(+)0000 0000 ~ (+) 0111 1111, 同样,它们分别0 ~ +127 正负数加起来,共256个编码 若不能理解,还请仔细查看补码的编码方式和编码原理,这里我就不罗嗦了。