2014-09-25

C++14の新機能: 2進数リテラル

C++14の標準規格は、無事制定された。そこで、C++14に正式に入ることが確定した新機能を、解説していこうと思う。

今回は、手始めに2進数リテラルを解説する。

2進数リテラルとは、C++14に追加された新しい整数リテラルである。その文法と意味は、文章で解説するよりも、コードを読んだほうが理解が早いだろう。

int main()
{
    int a = 0b11 ; // 3
    int b = 0B11 ; // 3
    int c = 0b1111 ; // 15
    int d = 0b1011 ; // 11
}

これまで、C++の整数リテラルには、8進数、10進数、16進数があったが、新しく2進数リテラルが追加された。

文法は、0b、もしくは0Bに続けて、0か1が連続する。

2進数リテラルは、ビット列演算などをするソースコードをわかりやすく記述するのに役立つ。

主要コンパイラーの対応状況であるが、GCCは独自拡張として、4.3から2進数リテラルをサポートしている。GCC 4.9で正式にC++標準規格としても有効になるように変更された。ClangはGCCより後発で、GCCとの互換性のためにGCCの独自拡張も多く実装しているため、当初から2進数リテラルはサポートしてる。

GCCのC++14実装状況: C++1y/C++14 Support in GCC - GNU Project - Free Software Foundation (FSF)

ClangのC++14実装状況: Clang - C++1z, C++14, C++11 and C++98 Status

ドワンゴ広告

この記事はドワンゴ勤務中に書かれた。

ドワンゴは本物のC++プログラマーを募集しています。

採用情報|株式会社ドワンゴ

CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0

1 comment:

  1. VC使いです。
    現在二進数を記述するときは、自分の頭が残念なので指で計算して16進数で記述しています。それが改善されるのは非常に!非常に!!ありがたいです。

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.