打孔卡(Punched card)又称穿孔卡、霍尔瑞斯式卡或IBM卡,是一块纸板,在预先知道的位置利用打洞与不打洞来表示数字消息。现在几乎是一个过时的存储器,但其设计转变成现今常用于考试及彩券投注等用途的光学划记符号识别卡片。
1801年,法国人约瑟夫·玛丽·雅卡尔发明了打孔卡用在控制织布机织出的图案。
1880年代,美国人口调查局职员赫尔曼·何乐礼发明了用于人口普查数据的穿孔卡片及机器,并用于1890年美国人口普查,仅6周就完成了统计。而此前1880年美国人口普查的数据全靠手工处理,历时7年才得出最终结果。何乐礼创建的公司,发展为今日的IBM。
1890年代至20世纪初,穿孔卡广泛运用在商业和相关文书。20世纪期间,打孔卡应用在单位记录机作为输入端、处理和计算机程序。早期的数字电脑运用打孔机已输入信息的打孔卡当做计算机程序和数据的主要输入介质。另外,一些投票机也运用打孔卡。
1928年,IBM发明的80列、矩形孔卡片,成为事实上的标准。其工作原理如下:编号为0至9,总计10行;以及一块区域,用于第11、第12行(注意,没有编号为第10的行)。
每列的穿孔组合用于表示单个字符:
总计表示了67个字符。
进入到数字计算机时代,上述穿孔卡片字符表示方式发展为6比特的字符编码:用4比特表示第0行至第9行的哪一行被穿孔;用2比特表示第11、第12行的哪一行被穿孔。这可以表示所有的单孔或者双孔的字符表示,这被称作“二进制编码的十进制交换码”(Binary Coded Decimal Information Code,BCDIC, BCD码)。
1964年,IBM在BCDIC上又增加2个比特,形成了8比特的“扩充的二进制编码的十进制交换码”(Extended Binary Coded Decimal Information Code,EBCDIC),首先用于IBM System/360计算机。EBCDIC向后兼容BCDIC,扩充了小写字母,以及从ASCII码借鉴来的一些控制字符(穿孔卡片实际上不需要,也不表示控制字符)。因为EBCDIC脱胎于穿孔卡,所以其字母表是以9个为一组,彼此不连续编码表示的,这给程序员带来了很大不便。例如,字母“I”编码为0xC9;而字母“J”编码为0xD1,二者中间有8个码位间断。EBCDIC一直用到目前的IBM System/390计算机系统。
本条目部分或全部内容出自以GFDL授权发布的《自由在线电脑词典》(FOLDOC)。