Stack OverflowのDoes C++, as an abstraction, support "bits" representing one of more than two values?より。
プログラミング言語C++の言語仕様は、2つ以上の値をとる"ビット"を許容するか?例えば"3状態ビット"であっても成り立つか?というお話。実用性は皆無です。
- C++11標準ではビット(bit)について直接定義している箇所は無いらしい。
- C++11標準のnoteには言及箇所があるが、それはinformativeであってnormativeじゃないよねと突っ込み。
- C++11がnormativeに参照するC99標準では下記の定義が行われているとのこと。
1 bit unit of data storage in the execution environment large enough to hold an object that may have one of two values
つまりC99標準でも「2値のうち1個を保持するのに十分なサイズ」としか定義していないようです。これは"ビット"は「少なくとも2値以上の状態をとること」を意味しますが、一方で「必ず2値状態をとること」は意味しないため、やっぱり厳格な答えにはならないねという所のようです。
おしまい。