LG蓝色天空 发表于 2016-4-14 15:42:21

signed char 形 i=255,十进制输出,为什么等于-1?

这是一道课后习题在小甲鱼的课程中,他是这样解释的,signedchar取值范围为-128~127,十进制的i=255即二进制的1111 1111,signed char第一位为符号位,转换为十进制是-1?怎么不是-127?我不明白,请大家指教。

我想的另一种解法是,signed char的取值范围为-128~127,共256 个数,255超过取数的范围,共通过映射映到这个范围中去,即255-256=-1;或其他的比如i=254,输出后为254-256=-2;   

人造人 发表于 2016-4-14 17:27:11

本帖最后由 人造人 于 2016-4-14 17:28 编辑

1个字节                         数值
0 0 0 0 0 0 0 0               0
1 1 1 1 1 1 1 1               -1
1 1 1 1 1 1 1 0               -2
1 1 1 1 1 1 0 1               -3
1 1 1 1 1 1 0 0               -4
..................
1 0 0 0 0 0 1 0               -126
1 0 0 0 0 0 0 1               -127
1 0 0 0 0 0 0 0               -128

0 1 1 1 1 1 1 1                  127         127 + 1 = -128 (负128)
0 1 1 1 1 1 1 0                  126
0 1 1 1 1 1 0 1                  125
........
0 0 0 0 0 0 1 1                  3
0 0 0 0 0 0 1 0                  2
0 0 0 0 0 0 0 1                  1
0 0 0 0 0 0 0 0                  0
1 1 1 1 1 1 1 1               -1
1 1 1 1 1 1 1 0               -2
...........


能看懂吗?

LG蓝色天空 发表于 2016-4-14 20:04:06

人造人 发表于 2016-4-14 17:27
1个字节                         数值
0 0 0 0 0 0 0 0               0
1 1 1 1 1 1 1 1            ...

计算机所有的数据存储都是补码是吧,你是这个意思

人造人 发表于 2016-4-14 21:01:32

LG蓝色天空 发表于 2016-4-14 20:04
计算机所有的数据存储都是补码是吧,你是这个意思

能看懂吗?
页: [1]
查看完整版本: signed char 形 i=255,十进制输出,为什么等于-1?