- cpp14[meta cpp]
整数リテラルのプレフィックスとして0b
もしくは0B
を付けることで、2進数を表す値を記述できる。
int x = 0b1010; // 2進数の値1010を表す。xの値は、10進数の値10となる
0b
と0B
に、機能としての違いはない。数値部分に入力できる数字は0
と1
のみである。
C++14段階では、整数を2進数表記で文字列化もしくはストリーム出力するための機能は含まれない。
2進数リテラルが追加されたことにより、C++14時点で規定される基数リテラルは以下のものとなった:
- 10進数リテラル(プレフィックスの指定なし)
- 16進数リテラル(
0x
もしくは0X
をプレフィックスとして指定する) - 8進数リテラル(
0
をプレフィックスとして指定する) - 2進数リテラル(
0b
もしくは0B
をプレフィックスとして指定する)
- 浮動小数点数を含まない、整数リテラルに対してのみ、2進数リテラルを使用できる
- 2進数リテラルを記述するには、
0b
もしくは0B
プレフィックスを指定する - 数値部分に入力できる数字・文字は
0
と1
のみである - 2進数リテラルは、リテラル演算子と組み合わせて使用できる
#include <iostream>
int main()
{
int x = 0b1010;
std::cout << x << std::endl;
// 数値リテラルの桁区切り文字と組み合わせて、4桁区切りする
int y = 0b1000'1111;
std::cout << y << std::endl;
}
10
143
0b
/0B
プレフィックスによる2進数リテラルは、GCCやClangの言語拡張として古くからサポートされていたほか、Java、Python、Dといった言語でも同じ構文でサポートされていた。
こういった経緯から、C++標準で2進数リテラルをサポートすることとなった。