[解決済み] なぜ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つのトークンから構成されるようになりました。
- パーサは定数であることをすぐに見分けることができます。
-
パーサはすぐにベース (
0
はどちらのベースでも同じです)。 -
数学的にまともである (
00005 == 05
)、そして -
のように)貴重な特殊文字は必要ありません。
#123
).
BからCができたとき、16進数の必要性が生じたが(PDP-11は16ビットワード)、上記の点はすべて有効であった。8進数は他のマシンではまだ必要でしたので。
0x
が任意に選ばれました(
00
は、おそらく不格好だと判断されたのでしょう)。
C#はC言語の子孫なので、構文を継承しています。
関連
-
[解決済み] mallocで文字列を確保する
-
[解決済み] CコードでEOFを表現する?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] Bashで変数で定義された数値の範囲を反復処理するにはどうすればよいですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] JavaScriptで10進数から16進数へ変換する方法
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] .NETを使用して16進数のカラーコードから色を取得するには?
-
[解決済み] 実際の関数定義と比較して)パラメータがない関数がコンパイルされるのはなぜですか?
-
[解決済み】rand()+rand()で負の数が出るのはなぜ?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
VSCodeでCプログラムを書くとエラーになる:ソースファイル "stdio.h" を開くことができない
-
C/C++の再定義
-
C: 1を求める! + 2! + 3! + ... + n! (ループ)
-
[解決済み] Valgrind が初期化されていないバイトについて警告する
-
[解決済み] flexible array member not at end of structエラーの原因は何ですか?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] フリーは、どのように無料化を知っているのですか?