读书人

单字节Ascii范围是0~255还是127~127啊

发布时间: 2012-03-20 14:01:11 作者: rapoo

单字节Ascii范围是0~255还是127~-127啊.
经过查资料知道:
Ascii码 最早是7位 也就是 16进制 0x00~0x7f 二进制 0000 0000~0111 1111 10进制 0~127
后面又扩展了就是用上了8位 所以是 16进制 0x00~0xff 二进制 0000 0000~1111 1111 10进制 0~255


但是我们看: 16进制0x7f 二进制 0111 1111 10进制 127
根据补码 1000 0001 也就是0x81 他因该是-127 还是128呢....

1.问这个问题是因为有人说ascii码是在-127~127之间有人说0~255之间,从上面可以看出两种说法都对,
但在现在的电脑中是好象是用0~255那种,那-127~127可以在那里用到.

2.还有我取汉字的第一个字节 为什么是一个负数????

[解决办法]
o o
[解决办法]
ASCII字符和数值有256个(2^8),每个ASCII字符编码用八个比特,是单字节。在ASCII里,数值0到127范围通用所有的计算机,而从128到255,各类计算机的安排有所不同。
[解决办法]
还有一点不解的是
char 的范围是-128~127
从计算上来因该是最大的1111 1111 也就是-127 为什么会有-128这个是怎么来的.

===============================
从补码的方式去考虑就明白了.
键盘不好使,不写了.
[解决办法]
标准中并没有规定char是signed的还是unsigned的!

这个完全是由各种编译器来实现的,所以说它的范围(-128,127]或者[0, 255]都是正确的...
[解决办法]
char 默认的是无符号字符的,所以是[0,255]
有符号字符的是-128~127,至于为什么是-128,我认为是:
10000000 = -128 这个表示十进制的-0的
00000000 = 0 这个表示十进制的+0的
[解决办法]
char的范围无定义,可能是-128到127也有可能是0-255
ascii码是0-127
[解决办法]
加上unsigned就是0-255
不加就是-128---127
[解决办法]
char 默认是有符号的!!!
[解决办法]
单字节Ascii : 0~127
(扩展Ascii 128 ~255)
char 一般是 0~255
不是一个概念

读书人网 >C语言

热点推荐