Onaltılık değişmez değerler için "0x" kuralı nereden ve ne zaman ortaya çıktı?

Aug 16 2020

1980'lerin başlarında, C, 0xonaltılık olarak ifade edilen tamsayı değişmezlerini belirtmek için bir önek olarak kullanıyordu , ör 0xCAFE. Bu , 1972 itibariyle B'de mevcut değildi , ancak B, bir 0önek aracılığıyla sekizlik tamsayı hazır değerleri destekledi .

Bu 0xönek ilk nerede ve ne zaman kullanıldı?

Yanıtlar

36 Raffzahn Aug 16 2020 at 13:28

Bu, 1972 itibariyle B'de mevcut değildi, ancak B, bir 0 öneki aracılığıyla sekizlik tamsayı değişmezlerini destekledi.

Doğru, ancak B'nin öncülü BCPL'de #sekizlik ve #xonaltılık için bir gösterim vardı . Yani fikir bir nesli "atladı".


C'nin geçmişi, daha iyi veya daha kötüsü için daha sonra tekrar eklenecek özellikleri kaldırma işlemlerinden biridir.

  • CPL (Kombine Programlama Dili), Cambridge ve Londra'da sistem programlama için basitleştirilmiş bir Algol olarak geliştirilmiştir (* 1). EDSAC 2, Atlas ve IBM 7094 için 1965 / 66'da uygulandı.

  • BCPL (Temel CPL), adından da anlaşılacağı gibi CPL'nin basitleştirilmiş bir versiyonuydu, ilk olarak 1967'de bir IBM 7094 (* 2) üzerinde uygulandı.

  • B yine basitleştirilmiş bir BCPL (* 3, * 4) idi ve 1969'da PDP-7'ye uyacak şekilde yapıldı.

  • C, 1972ff'de PDP-11 için NB (Yeni B) aracılığıyla geliştirildi ve özellikler eklendi.

CPL# sekizlik sabitleri belirtmek için kullanılır . Gerçekleştirildiği tüm makinelerde 3'e bölünebilen kelime boyutları olduğundan ve çıktı için 6 bit karakter kullandığından, hex'e gerçek bir ihtiyaç yoktu.

BCPL (oldukça kısa) bir zaman içinde gelişti. Başlangıçtan itibaren #sekizlik bir sayıyı işaretlemek için kullanılırken, kısa süre sonra onaltılık#b için ikili ve hatta sekizlik için bile tamamlandı . Bu eklemeler zamana ve uygulamaya özeldi, ancak en azından hızlı bir standart haline geldi.#x#o#x

B , önceki sıfır lehine #xtüm #gösterimle (* 5) yeniden düşerek ayrıştırıcıyı basitleştirdi. PDP-7, 3 kelimelik bir makinenin katı olduğundan, ihtiyaç duyulan tek makine spesifik gösterimiydi (* 6,7).

C de PDP-11 için geliştirildi, bunun için 16 bit makine olarak birçok makineye bağlı sabit doğal olarak onaltılık olarak gelir - 8 bit bayt ve ASCII'nin 32'li gruplar halinde bölütlemesinden bahsetmiyorum bile. kullanışlı - tam da bu sefer önceki sıfır fikrini koru.


* 1 - CPL gerçekten görülmeye değer. C'nin temel unsurlarının birçoğuna, temel unsur olarak kelimelerin işaretçileri gibi zaten sahipken, aynı zamanda günümüzden oldukça alışılmadık görünen birkaç özelliği de içerir. Örneğin a = bc, bc değişkenini a'ya atamaz, ancak b çarpı c'nin çarpımı. Çok karakterli tanımlayıcıların büyük harflerle başlaması gerekiyordu. Bu, çok sevilen deve vakasının da kaynağı olabilir.

* 2 - Ve o sırada kıvrık veya köşeli ayraçları olmayan bir Model 35 TTY, bu nedenle digraflar eklendi. Benzer şekilde ters eğik çizgi yok, bu nedenle *dizelerdeki özel karakterler için kullanıldı.

* 3 - Artı bazı eğlenceli anahtarlar. Algol +:=artırılmış atama olarak vardı , bu yüzden CPL ve BCPL kullandı =+, B ise geri döndü +=.

* 4 - Belki bazı PL / ekledim.

* 5 - Benzerlik #, karşılaştırma operatörlerinin bir parçası olarak düştü

* 6 - 8 bit bayt ve buna karşılık gelen onaltılık gösterimin yalnızca kısa bir süre önce IBM / 360 ile tanıtıldığını unutmamak gerekir.

* 7 - İlginç bir yan not, CTC'nin aynı zamanda 1970 Datapoint 2200 için Assembler'ında sekizlik sabitler için bir önceki sıfır kullanması olabilir . Dolayısıyla doğrudan bir ilişki olmadığını bilmeme rağmen, Thompson ile aynı zamanda aynı çözümü bulmaları oldukça ilginç.