อนุสัญญา "0x" สำหรับตัวอักษรเลขฐานสิบหกเกิดขึ้นที่ไหนและเมื่อใด

Aug 16 2020

โดยในช่วงต้นทศวรรษที่ 1980, C ใช้เป็นคำนำหน้าเพื่อระบุจำนวนเต็มตัวอักษรที่แสดงในเลขฐานสิบหกเช่น0x 0xCAFEสิ่งนี้ไม่มีอยู่ใน Bในปี 1972 แม้ว่า B จะรองรับลิเทอรัลจำนวนเต็มฐานแปดผ่าน0คำนำหน้า

0xคำนำหน้านี้ใช้ครั้งแรกที่ไหนและเมื่อใด

คำตอบ

36 Raffzahn Aug 16 2020 at 13:28

สิ่งนี้ไม่มีอยู่ใน B ในปี 1972 แม้ว่า B จะรองรับลิเทอรัลจำนวนเต็มฐานแปดผ่านคำนำหน้า 0

จริง แต่ BCPL รุ่นก่อนของ B มีสัญกรณ์#สำหรับฐานแปดและ#xฐานสิบหก ความคิดจึง 'เพิ่มขึ้น' ชั่วอายุคน


ประวัติของ Cเป็นหนึ่งในการลบคุณสมบัติที่จะเพิ่มในภายหลัง ... ดีขึ้นหรือแย่ลง

  • CPL (ภาษาโปรแกรมรวม) ได้รับการพัฒนาในเคมบริดจ์และลอนดอนเป็น Algol แบบง่ายสำหรับการเขียนโปรแกรมระบบ (* 1) มันถูกนำมาใช้ในปี 1965/66 สำหรับ EDSAC 2, Atlas และ IBM 7094

  • BCPL (CPL พื้นฐาน) เป็นชื่อที่บ่งบอกถึงเวอร์ชันที่เรียบง่ายของ CPL ซึ่งติดตั้งครั้งแรกในปี 1967 บน IBM 7094 (* 2)

  • Bเป็น BCPL แบบง่ายอีกครั้ง (* 3, * 4) ซึ่งทำขึ้นเพื่อให้พอดีกับ PDP-7 ในปีพ. ศ. 2512

  • C ได้รับการพัฒนาผ่าน NB (New B) สำหรับ PDP-11 ในปีพ. ศ. 2515 โดยเพิ่มคุณสมบัติ (ย้อนกลับ)

CPLใช้#เพื่อแสดงค่าคงที่ฐานแปด ไม่จำเป็นต้องใช้ฐานสิบหกอย่างแท้จริงเนื่องจากเครื่องทั้งหมดที่มีการใช้งานมีขนาดคำหารด้วย 3 และใช้อักขระ 6 บิตสำหรับเอาต์พุต

BCPLมีการพัฒนาในช่วงเวลา (ค่อนข้างสั้น) ในขณะที่ตั้งแต่เริ่มต้น#ถูกใช้เพื่อทำเครื่องหมายเลขฐานแปด แต่ในไม่ช้าก็มีการเสริมด้วย#bสำหรับเลขฐานสอง#xสำหรับเลขฐานสิบหกและแม้แต่#oเลขฐานแปด การเพิ่มเติมเหล่านี้เป็นเวลาและการนำไปใช้งานที่เฉพาะเจาะจง แต่อย่างน้อย#xก็กลายเป็นมาตรฐานอย่างรวดเร็ว

Bลดลง#xอีกครั้งโดยใช้#สัญกรณ์ทั้งหมด(* 5) เพื่อเป็นศูนย์นำหน้าซึ่งทำให้ตัวแยกวิเคราะห์ง่ายขึ้น เนื่องจาก PDP-7 เป็นเครื่องขนาด 3 คำที่มีหลายคำเลขฐานแปดจึงเป็นสัญกรณ์เฉพาะเครื่องที่จำเป็น (* 6,7)

ในทางกลับกันCได้รับการพัฒนาสำหรับ PDP-11 ซึ่งในฐานะเครื่อง 16 บิตค่าคงที่ขึ้นอยู่กับเครื่องจำนวนมากจะมาเป็นเลขฐานสิบหกโดยธรรมชาติไม่ต้องพูดถึงการแบ่งส่วนของ 8 บิตไบต์และ ASCII ในกลุ่ม 32 ตอนนี้การนำสัญกรณ์ฐานสิบหกมาพิจารณาอีกครั้ง มีประโยชน์ - แค่เวลานี้อยู่กับความคิดของศูนย์ก่อนหน้า


* 1 - CPL คุ้มค่าจริงๆ แม้ว่าจะมีพื้นฐานของ C อยู่แล้วเช่นคำชี้ไปยังคำต่างๆเป็นองค์ประกอบพื้นฐาน แต่ก็มีคุณสมบัติหลายอย่างที่ดูแปลกใหม่ตั้งแต่วันนี้ ตัวอย่างเช่นa = bcไม่ได้กำหนดตัวแปร bc ให้กับ a แต่ผลคูณของ b คูณ c ตัวระบุหลายอักขระต้องขึ้นต้นด้วยตัวพิมพ์ใหญ่ นี่อาจเป็นที่มาของเคสอูฐที่ชอบมาก

* 2 - และรุ่น 35 TTY ซึ่งในเวลานั้นไม่มีวงเล็บปีกกาหรือสี่เหลี่ยมจึงมีการเพิ่ม digraphs ไม่มีเครื่องหมายทับกลับเหมือนกันจึง*ใช้สำหรับอักขระพิเศษในสตริง

* 3 - บวกสวิตช์ตลก ๆ มี Algol +:=มอบหมายเติมเพื่อใช้ CPL และ BCPL =+ขณะที่ B +=เปลี่ยนกลับไป

* 4 - อาจจะมี PL / ฉันเพิ่ม

* 5 - มันลดลง#เช่นเดียวกันเนื่องจากเป็นส่วนหนึ่งของตัวดำเนินการเปรียบเทียบเช่นกัน

* 6 - ควรระลึกไว้เสมอว่า 8 บิตไบต์และสัญกรณ์ฐานสิบหกที่เกี่ยวข้องนั้นเพิ่งเปิดตัวเมื่อไม่นานมานี้กับ IBM / 360

* 7 - หมายเหตุด้านที่น่าสนใจอาจเป็นได้ว่า CTC ใช้เช่นกันก่อนหน้านี้เป็นศูนย์สำหรับค่าคงที่ฐานแปดในประกอบของพวกเขาสำหรับปี 1970 Datapoint 2200 ดังนั้นในขณะที่ฉันไม่รู้ว่าไม่มีความสัมพันธ์โดยตรง แต่ก็น่าสนใจมากที่พวกเขาคิดหาวิธีแก้ปัญหาเดียวกันในเวลาเดียวกันกับที่ทอมป์สันทำ