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作为符号位 然后就是一串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】
哦(ᵒ̤̑₀̑ᵒ̤̑)哦这下明白了
谢谢
温馨提示:答案为网友推荐,仅供参考