char 字符范围

来源:互联网 发布:斑马网络计划破解软件 编辑:程序博客网 时间:2024/06/05 10:54

有如下代码:

    char Char_a = -129;  printf("%d\n",Char_a);

 求输出结果。
运行后输出127 。
看了这个结果没什么想法,不知道这么计算出来的。看了下C语言和网上资料总结如下:
教程上有-1的补码表示过程如下:
负1原码:10000001
负1反码:11111110
负1补码:11111111
这样算其实不正确,实际计算机按如下操作计算负1补码:
1原码:00000001
发现是负数做两步:
1反码:11111110
1补码:11111111(-1)
计算机用负数的绝对值的补码表示这个负数

这样既可以解释-129了,如下:

129原码:10000001
129反码:01111110
129补码:01111111(+127)
 这样也可以解释char 范围从-128~127
-128为什么表示成10000000
128原码:10000000
128反码:01111111
128补码:10000000(-128)
0 0