ASCII 標準於 1963 年採用,現在幾乎沒有人使用前 128 個字符與 ASCII 不同的編碼。 然而,直到上個世紀末,EBCDIC 一直被積極使用——IBM 大型機及其蘇聯 ES 計算機克隆的標準編碼。 EBCDIC 仍然是 z/OS 中的默認編碼,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 由四家公司合併而成,其中技術最先進的是 Tabulating Machine 公司,由發明家 Herman Hollerith 於 1896 年創立
最細心的人可能會注意到 Hollerith 的地圖有 12 行表示球洞,儘管十行足以表示數字; 在 BCDIC 中,12 個可能的代碼中只有 16 個用於最高有效兩位的每個值。
當然,這並非巧合。 Hollerith 最初打算為“特殊標記”添加額外的行,這些標記沒有被匯總,而是被簡單地計算——就像在第一個製表符中一樣。 (今天我們稱它們為“位域”。)此外,在“特殊標記”之間可以設置組指示符:如果在製表時不僅需要最終和,還需要中間值,則製表器在檢測到時停止任何一組指標發生變化,操作員必須將小計從數字記分牌複製到紙上,重新設置記分牌,然後重新開始製表。 例如,在計算資產負債表時,一組卡片可以對應一個日期或一個交易對手。
到 1920 年,當 Hollerith 已經退休時,“打印製表機”開始使用,它連接到電傳打字機並且可以自己打印小計而不需要操作員干預。 現在的困難是確定每個印刷數字所指的是什麼。 1931 年,IBM 決定使用“特殊標記”來指定字母:第 12 行的標記表示字母來自 A
對 I
, 第 11 卷 - 從 J
對 R
, 零 - 從 S
對 Z
. 新的“字母製表符”可以打印每組卡片的名稱,以及小計; 同時,一個完整的列變成了字符之間的空間。 請注意 S
由 0+2 孔組合表示,而 0+1 組合最初並未使用,因為擔心同一列中並排的兩個孔可能會導致讀取器出現機械問題。
現在您可以從稍微不同的角度查看 BCDIC 表:
除了0和空格互換外,高兩位定義了對應字符從1931年開始打入打孔卡片的“特殊標記”; 低四位決定卡片主體部分打孔的數字。 符號支持 & - /
1930 年代加入 IBM 標籤,這些字符的 BCDIC 編碼對應於為它們打孔的孔組合。 當需要支持更多字符時,第 8 行被打孔作為額外的“特殊標記”——因此,一列中最多可以有三個孔。 直到本世紀末,這種穿孔卡片的格式幾乎沒有變化。 在蘇聯,保留了 IBM 的拉丁語和標點符號編碼,對於西里爾字母,他們在第 12、11、0 行同時打了幾個“特殊標記”——不限於一列三個孔。
在創建 IBM 704 計算機時,他們很長一段時間都沒有考慮它的字符編碼:他們採用了當時在穿孔卡片中已經使用的編碼,並且只“放置”了 0。 1964 年,當從 BCDIC 轉換為 EBCDIC 時,每個字符的低四位保持不變,儘管高位稍微打亂了一些。 因此,Hollerith 在上個世紀初選擇的穿孔卡格式影響了所有 IBM 計算機的架構,包括 IBM Z。
來源: www.habr.com