ASCII 标准于 1963 年采用,现在几乎没有人使用前 128 个字符与 ASCII 不同的编码。 然而,直到上世纪末,EBCDIC 才被积极使用——IBM 大型机及其苏联克隆 EC 计算机的标准编码。 EBCDIC 仍然是 z/OS(现代 IBM Z 大型机的标准操作系统)中的主要编码。
当查看 EBCDIC 时,立即引起您注意的是字母不是排成一行的:之间 I
и J
和之间 R
и S
有未使用的位置(在 ES 计算机上这些间隔
EBCDIC(“扩展 BCDIC”)这个名称暗示这种编码(与 ASCII 不同)不是从头开始创建的,而是基于六位 BCDIC 编码,该编码自此以来一直使用
不存在立即向后兼容性:BCDIC 的一个便利功能在过渡到 EBCDIC 时丢失了,即数字 0
- 9
对应代码0-9。 但两者之间有七个代码的差距 I
и J
以及之间的八个代码 R
и S
已经去过 BCDIC 了。 哪儿来的呢?
(E)BCDIC 的历史与 IBM 的历史同时开始——早于电子计算机。 IBM 由四家公司合并而成,其中技术最先进的是制表机公司,由发明家 Herman Hollerith 于 1896 年创立
最细心的人可能已经注意到,在 Hollerith 地图上,有 12 行洞,尽管对于数字来说 12 行就足够了; 在 BCDIC 中,对于最高有效两位的每个值,仅使用 16 个可能的代码中的 XNUMX 个。
当然,这并非巧合。 最初,霍尔瑞斯打算为“特殊标记”添加额外的行,这些行不会相加,而是简单地计数 - 就像第一个制表器一样。 (今天我们称它们为“位域”。)此外,在“特殊标记”中可以设置组指示符:如果制表不仅需要最终的总和,还需要中间的总和,那么制表器将在以下情况下停止:它检测到任何组指标发生变化,操作员必须将数字板中的小计重写到纸上,重置板并恢复制表。 例如,在计算会计余额时,一组卡可以对应于一个日期或一个交易对手。
到 1920 年,当 Hollerith 退休时,“打字制表机”开始使用,它连接到电传打字机,可以自行打印小计,无需操作员干预。 现在的困难是确定每个印刷数字所指的内容。 1931年,IBM决定使用“特殊标记”来表示字母:第12行的一个标记表示来自 A
对 I
,在 11 日 - 从 J
对 R
,从零开始 S
对 Z
。 新的“字母制表机”可以打印每组卡片的名称以及小计; 在这种情况下,完整的列变成了字符之间的空格。 请注意 S
由孔组合0+2指定,并且最初不使用0+1组合,因为担心同一列中彼此相邻的两个孔会导致阅读器中的机械问题。
现在您可以从稍微不同的角度查看 BCDIC 表:
除了0和空格颠倒外,最高两位定义了自1931年以来为相应字符打入打孔卡的“特殊标记”; 最低有效四位确定打入卡主要部分的数字。 符号支持 & - /
在 1930 世纪 8 年代被添加到 IBM 制表机中,这些字符的 BCDIC 编码对应于为它们打孔的组合。 当需要支持更多字符时,第 12 行被打孔作为额外的“特殊标记” - 因此,一列中最多可以有三个孔。 直到本世纪末,这种打孔卡的格式几乎保持不变。 在苏联,他们保留了 IBM 的拉丁文和标点符号编码,对于西里尔字母,他们在第 11、0、XNUMX 行同时打了几个“特殊标记”——不限于一列中的三个孔。
当IBM 704计算机被创建时,他们并没有考虑它的字符编码:他们采用了当时打孔卡中已经使用的编码,只是“把它放在它的位置上”。 0年,在从BCDIC到EBCDIC的过渡期间,每个符号的低四位保持不变,尽管高位进行了一些改组。 因此,Hollerith 在上世纪初选择的穿孔卡格式影响了所有 IBM 计算机的体系结构,包括 IBM Z。
来源: habr.com