1. ホーム
  2. c

[解決済み] なぜ16進数には0xがつくのですか?

2022-03-19 13:09:14

質問

なぜ16進数では、先頭に 0x ? 接頭辞の使い方は理解できるのですが、なぜ 0x が選ばれました。

解決方法は?

短い話です。 その 0 は、パーサーが(識別子や予約語ではなく)定数を扱っていることを知らせます。それでもなお、基数を指定するための何かが必要です。 x は任意に選択できる。

長文です。 60年代、プログラミングの数字システムは、10進数と 8進数 - メインフレームは1バイトが12、24、36ビットで、これは3=log2(8)でうまく割り切れるんです。

BCPL言語では、次のような構文が使われていました。 8 1234 は8進数です。ケン・トンプソンがBCPLからBを作ったとき、彼は 0 という接頭辞を付けます。これは、以下の点で優れています。

  1. 整数定数は常に1つのトークンから構成されるようになりました。
  2. パーサは定数であることをすぐに見分けることができます。
  3. パーサはすぐにベース ( 0 はどちらのベースでも同じです)。
  4. 数学的にまともである ( 00005 == 05 )、そして
  5. のように)貴重な特殊文字は必要ありません。 #123 ).

BからCができたとき、16進数の必要性が生じたが(PDP-11は16ビットワード)、上記の点はすべて有効であった。8進数は他のマシンではまだ必要でしたので。 0x が任意に選ばれました( 00 は、おそらく不格好だと判断されたのでしょう)。

C#はC言語の子孫なので、構文を継承しています。