续表
值得注意的是R与S之间编号有跳变。有时在编写程序的时候,尤其是程序中用到EBCDIC编码时,这个容易被忽视的小细节往往会令人抓狂。
小写与大写字母的数字穿孔是相同的,但它们的区域穿孔不同。在a\~i的小写字母,穿孔位于第12行和第0行,高半字节对应的编码为1000;在j\~r的小写字母,穿孔位于第12行和第11行,高半字节对应的编码为1001;在s\~z的小写字母,穿孔位于第11行和第0行,高半字节对应的编码为1010。小写字母的EBCDIC字符及其对应的十六进制编码如下表所示。
当然,标点符号和控制字符也都有自己的EBCDIC编码,但对于这些字符的编码系统没有必要去深究。
仔细观察IBM打孔卡,其中每一列细细数下共有12个孔,每个孔代表1位,也就是说可以提供12位的编码信息,不是吗?我们其实可以用打孔卡上每一列12孔中的7个来表示ASCI码。但是,这种方案有一个非技术方面的缺陷,那就是太多的穿孔将使得卡片变得很脆弱,容易折断。
采用8位编码的EBCDIC中其实还有很多编码未定义,这也说明当年 ASCII码采用了7位编码也是合乎情理的。在ASCI码刚刚问世的那个年代,存储器的价格贵得令人咋舌,有一些观点认为ASCI码可以用6位编码并配合转义字符来使用,这样既可以区分大小写又节约了存储器。这种方案并没有被采纳,当时还有一些人认为ASCI码应采用8位编码,他们对计算机的体系结构有了一个大胆的推测,即计算机应该按字节存储,7位存储是不合适的。今天来看,8位的字节存储已经作为了一项标准。尽管ASCI码从技术的本质上来看是7位编码,但仍以8位的形式存储。
编码隐匿在计算机软硬件背后的语言
320