c语言中无符号和有符号的整形变量在 表示字符数据是为什么取值范围不一样?能解释下么?~谢谢~

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:29:41
为什么无符号的范围是在 0-255 而有符号的是在 -127 到127 能说下原因么?~谢谢各位大虾了~

那是由于计算机的储存模式造成的。
在计算机中,数字的储存形式是二进制。
整形数是一个八位二进制数。
如:
xxxxxxxx
最大是:11111111
八个一
如果是无符号数,那么第一位就应该不是符号位,所以8个1的值是:
255
如果是有符号,那么第一位将是符号位。0表示正,1表示负,
如:01111111 表示数字大小的只有了7位就是127.
11111111表示大小的也只有7位,是-127.
明白了吗?

有符号位啊,最高位为符号位,1表示负,0位示正,低七位为值,000 0000-111 1111 表示0-127
帮答案为正0~127||-127~0=-127~127

可是为什么能用 无符号整形数据表示 字符数据呢?!acsii码最多可是到 127啊! 怎么还能用负数呢?!我有点不理解!能搞明白点么!?谢谢!楼上的再说下1