เหตุใดตัวอักษรจึงไม่เรียงกันใน EBCDIC

มาตรฐาน ASCII ถูกนำมาใช้ในปี 1963 และปัจจุบันแทบไม่มีใครใช้การเข้ารหัสที่มีอักขระ 128 ตัวแรกแตกต่างจาก ASCII อย่างไรก็ตาม จนถึงสิ้นศตวรรษที่ผ่านมา EBCDIC ถูกนำมาใช้อย่างแข็งขัน - การเข้ารหัสมาตรฐานสำหรับเมนเฟรมของ IBM และคอมพิวเตอร์ EC โคลนโซเวียต EBCDIC ยังคงเป็นการเข้ารหัสหลักใน z/OS ซึ่งเป็นระบบปฏิบัติการมาตรฐานสำหรับเมนเฟรม IBM Z สมัยใหม่

สิ่งที่ดึงดูดสายตาคุณทันทีเมื่อดู EBCDIC ก็คือตัวอักษรไม่เรียงกัน: ระหว่าง I и J และระหว่าง R и S มีตำแหน่งที่ไม่ได้ใช้ (บนคอมพิวเตอร์ ES ในช่วงเวลาเหล่านี้ กระจาย อักขระซีริลลิก) ใครจะคิดจะเข้ารหัสตัวอักษรที่มีช่องว่างไม่เท่ากันระหว่างตัวอักษรที่อยู่ติดกัน?

เหตุใดตัวอักษรจึงไม่เรียงกันใน EBCDIC

ชื่อ EBCDIC (“ Extended BCDIC”) บอกเป็นนัยว่าการเข้ารหัสนี้ - ต่างจาก ASCII - ไม่ได้ถูกสร้างขึ้นตั้งแต่ต้น แต่ขึ้นอยู่กับการเข้ารหัส BCDIC หกบิตซึ่งใช้มาตั้งแต่นั้นเป็นต้นมา ไอบีเอ็ม 704 (1954):

เหตุใดตัวอักษรจึงไม่เรียงกันใน EBCDIC

ไม่มีความเข้ากันได้แบบย้อนหลังในทันที: คุณลักษณะที่สะดวกสบายของ BCDIC ที่หายไปในการเปลี่ยนไปใช้ EBCDIC คือตัวเลข 0-9 สอดคล้องกับรหัส 0-9 อย่างไรก็ตาม มีช่องว่างระหว่างรหัสเจ็ดรหัส I и J และในแปดรหัสระหว่าง R и S เคยไป BCDIC แล้ว พวกเขามาจากไหน?

ประวัติของ (E)BCDIC เริ่มต้นพร้อมกันกับประวัติของ IBM ซึ่งมีมานานก่อนคอมพิวเตอร์อิเล็กทรอนิกส์ IBM ก่อตั้งขึ้นจากการควบรวมกิจการของสี่บริษัท โดยบริษัทที่มีความก้าวหน้าทางเทคโนโลยีมากที่สุดคือ Tabulating Machine Company ซึ่งก่อตั้งในปี พ.ศ. 1896 โดย Herman Hollerith ผู้ประดิษฐ์ ตาราง. ตารางแรกเพียงนับจำนวนไพ่ที่เจาะในตำแหน่งเฉพาะ แต่ในปี 1905 Hollerith เริ่มผลิต ทศนิยม ตาราง การ์ดแต่ละใบสำหรับตัวตารางทศนิยมประกอบด้วยฟิลด์ที่มีความยาวตามต้องการและตัวเลขที่เขียนในฟิลด์เหล่านี้ในรูปแบบทศนิยมปกติจะถูกรวมไว้ทั่วทั้งสำรับ การแยกย่อยแผนที่ออกเป็นช่องต่างๆ ถูกกำหนดโดยการเชื่อมต่อสายไฟบนแผงแพทช์ของตาราง ตัวอย่างเช่น ในไพ่เจาะของฮอลเลอริธนี้ เก็บไว้ ในหอสมุดแห่งชาติมีตอกหมายเลข 23456789012345678 ไว้ชัดเจน ไม่ทราบแบ่งเป็นช่องๆ ดังนี้

เหตุใดตัวอักษรจึงไม่เรียงกันใน EBCDIC

ผู้เอาใจใส่มากที่สุดอาจสังเกตเห็นว่าบนแผนที่ Hollerith มี 12 แถวสำหรับหลุม แม้ว่า 12 แถวจะเพียงพอสำหรับตัวเลขก็ตาม และใน BCDIC สำหรับแต่ละค่าของสองบิตที่สูงกว่า จะใช้รหัสได้เพียง 16 รหัสจาก XNUMX รหัสที่เป็นไปได้

แน่นอนว่านี่ไม่ใช่เรื่องบังเอิญ ในขั้นต้น Hollerith ตั้งใจให้มีแถวเพิ่มเติมสำหรับ "เครื่องหมายพิเศษ" ที่ไม่ได้รวมเข้าด้วยกัน แต่เพียงนับอย่างง่าย ๆ เช่นเดียวกับในตารางแรกสุด (วันนี้เราจะเรียกพวกมันว่า "ฟิลด์บิต") นอกจากนี้ ในบรรดา "เครื่องหมายพิเศษ" ยังสามารถตั้งค่าตัวบ่งชี้กลุ่มได้: หากการจัดตารางไม่เพียงต้องการผลรวมสุดท้ายเท่านั้น แต่ยังรวมถึงค่ากลางด้วย ตัวสร้างตารางจะหยุดเมื่อ โดยตรวจพบการเปลี่ยนแปลงในตัวบ่งชี้กลุ่มใดๆ และผู้ปฏิบัติงานจะต้องเขียนผลรวมย่อยจากกระดานดิจิทัลใหม่ลงบนกระดาษ รีเซ็ตบอร์ด และดำเนินการจัดตารางต่อ ตัวอย่างเช่น เมื่อคำนวณยอดคงเหลือทางบัญชี กลุ่มการ์ดอาจสอดคล้องกับวันที่หนึ่งหรือคู่สัญญาหนึ่งฝ่าย

ภายในปี 1920 เมื่อฮอลเลอริธเกษียณอายุไปแล้ว "เครื่องตารางการพิมพ์" ก็ถูกนำมาใช้ ซึ่งเชื่อมต่อกับเครื่องโทรพิมพ์และสามารถพิมพ์ผลรวมย่อยได้เองโดยไม่ต้องให้ผู้ปฏิบัติงานเข้ามาแทรกแซง ปัญหาตอนนี้คือการพิจารณาว่าแต่ละหมายเลขที่พิมพ์ออกมาอ้างอิงถึงอะไร ในปี พ.ศ. 1931 IBM ตัดสินใจใช้ "เครื่องหมายพิเศษ" เพื่อระบุตัวอักษร: เครื่องหมายในแถวที่ 12 ระบุตัวอักษรจาก A ไปยัง Iในวันที่ 11 - จาก J ไปยัง Rที่ศูนย์ - จาก S ไปยัง Z. "ตารางตัวอักษร" ใหม่สามารถพิมพ์ชื่อของการ์ดแต่ละกลุ่มพร้อมกับผลรวมย่อย ในกรณีนี้ คอลัมน์ที่ไม่ขาดตอนจะกลายเป็นช่องว่างระหว่างอักขระ โปรดทราบว่า S ถูกกำหนดโดยการรวมกันของรู 0+2 และเดิมทีไม่ได้ใช้การรวม 0+1 เนื่องจากกลัวว่าสองรูที่อยู่ติดกันในคอลัมน์เดียวกันจะทำให้เกิดปัญหาทางกลไกในตัวอ่าน

เหตุใดตัวอักษรจึงไม่เรียงกันใน EBCDIC

ตอนนี้คุณสามารถดูตาราง BCDIC จากมุมที่ต่างออกไปเล็กน้อย:

เหตุใดตัวอักษรจึงไม่เรียงกันใน EBCDIC

ยกเว้นว่า 0 และช่องว่างจะกลับกัน บิตที่สำคัญที่สุดสองบิตจะกำหนด "เครื่องหมายพิเศษ" ที่ถูกเจาะเข้าไปในการ์ดเจาะสำหรับอักขระที่เกี่ยวข้องตั้งแต่ปี 1931 และสี่บิตที่มีนัยสำคัญน้อยที่สุดจะกำหนดหลักที่เจาะเข้าไปในส่วนหลักของการ์ด การสนับสนุนสัญลักษณ์ & - / ถูกเพิ่มเข้าไปในตาราง IBM ในช่วงทศวรรษที่ 1930 และการเข้ารหัส BCDIC ของอักขระเหล่านี้สอดคล้องกับชุดค่าผสมของรูที่เจาะไว้ เมื่อจำเป็นต้องมีการรองรับอักขระจำนวนมากขึ้น แถวที่ 8 จะถูกเจาะเป็น "เครื่องหมายพิเศษ" เพิ่มเติม - ดังนั้น จึงสามารถมีได้ถึงสามรูในหนึ่งคอลัมน์ บัตรเจาะรูปแบบนี้แทบไม่มีการเปลี่ยนแปลงจนกระทั่งสิ้นศตวรรษ ในสหภาพโซเวียตพวกเขาทิ้งการเข้ารหัสภาษาละตินและเครื่องหมายวรรคตอนของ IBM และสำหรับตัวอักษรซีริลลิกพวกเขาเจาะ "เครื่องหมายพิเศษ" หลายอันพร้อมกันในแถว 12, 11, 0 - ไม่ จำกัด เพียงสามรูในคอลัมน์เดียว

เมื่อคอมพิวเตอร์ IBM 704 ถูกสร้างขึ้น พวกเขาไม่ได้คิดนานเกี่ยวกับการเข้ารหัสอักขระสำหรับเครื่องนี้ พวกเขานำการเข้ารหัสที่ใช้แล้วในการ์ดเจาะรูในขณะนั้น และเพียง "วางไว้ในตำแหน่งเท่านั้น" ในปี 0 ระหว่างการเปลี่ยนจาก BCDIC เป็น EBCDIC สี่บิตที่มีลำดับต่ำของแต่ละสัญลักษณ์ยังคงไม่เปลี่ยนแปลง แม้ว่าบิตที่มีลำดับสูงจะถูกสับเล็กน้อยก็ตาม ดังนั้น รูปแบบบัตรเจาะรูที่ Hollerith เลือกเมื่อต้นศตวรรษที่ผ่านมาจึงมีอิทธิพลต่อสถาปัตยกรรมของคอมพิวเตอร์ IBM ทุกเครื่อง จนถึงและรวมถึง IBM Z

ที่มา: will.com

เพิ่มความคิดเห็น