ASCII的长度和优点

在《Windows程序设计》中有这样一段话:ASCII的开发过程中对于代码的宽度应该是6位、7位或是8位,一直争议不断。考虑到可靠性,不能使用转换字符。因此ASCII不能使用6位编码。考虑到成本价格,也派出了8位编码的可能性。(位数多在当时是非常昂贵的。)(Charles Petzold著。第五版 2.1.1)

   这句话一直不太理解。上网搜了一下。整理一下。

   一、 ASCII由Hollerith卡的编码演变而来。Hollerith卡的编码变为BCDIC编码(6位),在发展为EBCDIC(8位)。EBCDIC是IBM的大型机标准。

如果使用6位码,那么可以有64个字符,这样就必须使用转换字符进行扩充,例如:在6位编码中,大写字母没有包含进去,我们就定义个转义字符,如\a代表大写字母A,\b代表字母B.也就是用已经分配的编码来组合替代未分配的编码.这样就会产生很多麻烦。尽管我们有些时候(比如C语言)还是使用转义字符。个人认为这是为了使用的方便而不是扩展。

二、随着计算机的发展,8位字节标准的确立,就可以用一个字节来存储ASCII。这样就多出来128个空位。IBM在1981年推出了这样的256个字符的字符集,包含了一些希腊字母以及其他字符。

三、另外,可以让最高位作为奇偶校验位。例如:“F”的ASCII码为46H,采用奇校验方式,为“0100 0110“,而不是“100 0110 ”。

四、ASCII的优点。26个字母代码是连续的(在EBCDIC代码中就不是这样的);大写字母和小写字母可通过翻转一位就可相互转化;10个数位的代码可从数值本身方便地得到(0是30H,9是39H)。

五、扩展至后的ASCII仍然不够用。双字节字符集(DBCS)诞生。例如中文的汉字就占两个字节。这种方式的问题很多。例如一个字符串的长度不是字节长度;如果指针指向了一个字节,那么前一个字节在哪里?

六、还有一些编码方式,都不是很完美。相对较好的方式是Unicode。即宽字符方式。它规定每个字符(不是字节)的长度不是8位,而是16位。中日韩的文字占用从0x3000-0x9FFF的代码。当然这样原来的ASCII字符就会浪费很多空间了。更严重的是,Unicode使用的仍然不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值