Quy ước `0x` cho các ký tự thập lục phân bắt nguồn từ đâu và khi nào?

Aug 16 2020

Vào đầu những năm 1980, C đã được sử dụng 0xnhư một tiền tố để biểu thị các chữ số nguyên được biểu thị bằng hệ thập lục phân, ví dụ 0xCAFE,. Điều này không tồn tại ở B kể từ năm 1972, mặc dù B đã hỗ trợ các ký tự số nguyên bát phân thông qua một 0tiền tố.

0xTiền tố này được sử dụng lần đầu tiên ở đâu và khi nào?

Trả lời

36 Raffzahn Aug 16 2020 at 13:28

Điều này không tồn tại ở B kể từ năm 1972, mặc dù B đã hỗ trợ các ký tự số nguyên bát phân thông qua tiền tố 0.

Đúng, nhưng tiền thân của B, BCPL, có ký hiệu là #bát phân và #xthập lục phân. Vì vậy, ý tưởng đã 'nhảy' một thế hệ.


Lịch sử của C là một trong những loại bỏ các tính năng sẽ được thêm vào sau này ... tốt hơn hoặc tệ hơn.

  • CPL (Ngôn ngữ lập trình kết hợp) được phát triển ở Cambridge và London như một Algol đơn giản hóa cho lập trình hệ thống (* 1). Nó được triển khai vào năm 1965/66 cho EDSAC 2, Atlas và IBM 7094.

  • BCPL (CPL cơ bản), như tên gọi cho thấy một phiên bản đơn giản hóa của CPL, được triển khai lần đầu tiên năm 1967 trên máy IBM 7094 (* 2).

  • B một lần nữa là BCPL đơn giản (* 3, * 4), được làm cho phù hợp với PDP-7 vào năm 1969.

  • C được phát triển thông qua NB (New B) cho PDP-11 vào năm 1972ff, bổ sung thêm các tính năng (trở lại).

CPL được sử dụng #để biểu thị các hằng số bát phân. Thực sự không cần hex, vì tất cả các máy mà nó được triển khai đều có kích thước từ chia hết cho 3 và sử dụng các ký tự 6 bit cho đầu ra.

BCPL phát triển trong một thời gian (khá ngắn). Mặc dù ngay từ đầu #đã được sử dụng để đánh dấu một số bát phân, nhưng nó đã sớm được bổ sung #bcho hệ nhị phân #xđối với hệ thập lục phân và thậm chí #ođối với bát phân. Những bổ sung này là thời gian và việc thực hiện cụ thể, nhưng ít nhất #xđã nhanh chóng trở thành một tiêu chuẩn.

B#x lại giảm xuống với toàn bộ #ký hiệu (* 5) nghiêng về số 0 ở trước, đơn giản hóa trình phân tích cú pháp. Vì PDP-7 là một máy kích thước bội số của 3 từ, nên hệ bát phân là ký hiệu máy cụ thể duy nhất cần thiết (* 6,7).

Đến lượt mình, C được phát triển cho PDP-11, với tư cách là máy 16 bit, nhiều hằng số phụ thuộc máy tự nhiên có dạng hex - chưa kể byte 8 bit và phân đoạn của ASCII theo nhóm 32. Bây giờ việc giới thiệu lại ký hiệu hex đã được xem xét. hữu ích - chỉ là lần này ở lại với ý tưởng về số 0 trước đó.


* 1 - CPL thực sự đáng xem. Mặc dù nó đã có nhiều điều cơ bản của C, như con trỏ đến các từ như là phần tử cơ bản, nó cũng chứa một số tính năng có vẻ khá độc đáo kể từ ngày nay. Ví dụ: a = bckhông gán biến bc cho a mà là tích của b nhân với c. Số nhận dạng nhiều ký tự phải bắt đầu bằng chữ in hoa. Đây cũng có thể là nguồn gốc của hộp đựng lạc đà rất được yêu thích.

* 2 - Và một TTY Model 35, vào thời điểm đó, không có dấu ngoặc nhọn hoặc vuông, do đó các dấu chấm đã được thêm vào. Tương tự không có dấu gạch chéo ngược, vì vậy *đã được sử dụng cho các ký tự đặc biệt trong chuỗi.

* 3 - Thêm một số công tắc vui nhộn. Có Algol +:=làm nhiệm vụ tăng cường, vì vậy đã sử dụng CPL và BCPL =+, trong khi B chuyển trở lại +=.

* 4 - Có thể một số PL / tôi đã thêm vào.

* 5 - Nó tương tự cũng bị loại bỏ #như một phần của các toán tử so sánh

* 6 - Luôn luôn cần lưu ý rằng byte 8 bit và ký hiệu hex tương ứng chỉ được giới thiệu không lâu trước đó với IBM / 360.

* 7 - Một lưu ý phụ thú vị có thể là CTC cũng đã sử dụng số 0 đứng trước cho các hằng số bát phân trong Bộ lắp ráp của chúng cho Datapoint 2200 năm 1970 . Vì vậy, mặc dù tôi không biết về mối quan hệ trực tiếp, nhưng điều khá thú vị là họ đã đưa ra cùng một giải pháp giống như Thompson đã làm.