char 类型的-128的补码是1000 0000对吗?计算机怎么理解这个二进制?

char 类型的-128的补码是1000 0000对吗?计算机怎么理解这个二进制?把1作为符号位 然后就是一串000 0000那不是成了-0输出了吗?

“char 类型的-128的补码是1000 0000对吗?”
是的。

“计算机怎么理解这个二进制?把1作为符号位 然后就是一串000 0000那不是成了-0输出了吗?”
所谓补码,主要是为了方便将减法转换为加法运算,从而简化计算机硬件设计(不需要真的实现减法运算电路,只要有加法运算电路就够了)。
例如你想计算100-98,实际上按照(+100)+(-98)计算就够了,也就是
0110 0100b + 1001 1110b = 0000 0010b
计算结果就是+2。追问

那我可以认为计算机把这个高位的1使用了2次吗?一次是当符号是负的 第二次把他当数据位,数据位时他是128,所以表达成了-128。是这样吗?

追答

不是的呀……就是符号位!你再好好动脑筋想想……

追问

大神 我想不出来😭😭

求解释

或者就是内部规定在高位是1的情况下000 0000就是128然后把符号加上去 因为在高位是0的情况下000 0000已经被定为0这个值了

追答

给你打个比方吧,
1000 0000是-128;
1000 0001是多少呢?是-127!能想明白不??
1000 0001 + 0111 1111的结果是0!【-127 + 127 = 0】

追问

哦(ᵒ̤̑₀̑ᵒ̤̑)哦这下明白了

谢谢

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网