程执行后的输出结果是-1,为什么

2024-11-15 21:51:25
推荐回答(2个)
回答1:

char是一个字节,也就是8bit,范围是-128~127
而0xff是16进制,换算成十进制就是255,超出范围,所以溢出了
所以这里取x的补码,也就是-1
输出-1后,x减1的到-2(不过没有再输出了不用管它)

正数的补码:与原码相同。
负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。

回答2:

其实在计算机内部他都是:1111 1111
对于char型范围: -128~127
第一位是符号位,如果要整型输出,求他的补码就是 1000 0001表示的就是-1