16 進数の先頭に が付くのはなぜですか0x
? 先頭の使用法は理解できますが、 が選択された理由の意味がわかりません0x
。
ベストアンサー1
簡単に言うと、は0
パーサーに定数 (識別子/予約語ではない) を扱っていることを伝えます。数値の基数を指定するためにまだ何かが必要です。 はx
任意の選択です。
長い話ですが、 60 年代に普及していたプログラミング数値システムは 10 進数と8 進数でした。メインフレームは 1 バイトあたり 12、18、24、または 36 ビットで、これは 3 = log2(8) で割り切れます。
BCPL言語は8 1234
8進数の構文を使用していました。ケン・トンプソンがBCPLからBを作成したとき、彼は0
代わりに接頭辞を使用しました。これは素晴らしいことです。
- 整数定数は常に1つのトークンで構成されるようになりました。
- パーサーは定数があることをすぐに判断できます。
- パーサーは基底(
0
両方の基底で同じ)をすぐに判断できます。 - それは数学的に正当である(
00005 == 05
)、そして - 貴重な特殊文字は必要ありません ( のように
#123
)。
C が B から作成されたとき、16 進数の必要性が生じました (PDP-11 には 16 ビットのワードと 8 ビットのバイトがありました)。上記のすべての点は依然として有効でした。他のマシンでは 8 進数が依然として必要であったため、0x
任意に選択されました (00
または、0h
おそらく扱いにくいとして除外されました)。
C# は C の子孫なので、構文を継承します。
Cの歴史の詳細については、デニス・M・リッチーのページ。