Onaltılık değişmez değerler için "0x" kuralı nereden ve ne zaman ortaya çıktı?
1980'lerin başlarında, C, 0x
onaltı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
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 #x
onaltı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 #x
tü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ç.