首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 二進制字面值:從 C++14 到用戶定義字面值

     編輯:C++ 入門

標準演進

  • C/C++ 早期無二進制字面值,GCC/Clang/MSVC 擴展支持 0b1010。
  • C++14 正式納入標準:0b1010 / 0B1010。
  • C++11 引入用戶定義字面值,可自定義 1010_B 後綴。

多種表示方法

  1. 標準字面值:int x = 0b101010; (C++14)
  2. strtol 系列:strtol("101010", nullptr, 2)
  3. std::bitset:bitset<8>("101010"),支持自定義 0/1 字符(如培根密碼 'A'/'B')。
  4. Boost:BOOST_BINARY(100 111000) 可分組易讀。
  5. 模板元編程:編譯期計算 binary<101010>::value(注意八進制陷阱)。
  6. 用戶定義字面值:constexpr int operator""_B(unsigned long long n) { ... },使用 101010_B。

代碼示例

// C++14
int a = 0b1010; // 10
// bitset 自定義字符
bitset<5> bacon("ABABB", 0, string::npos, 'A', 'B'); // 01011
// UDL (C++11)
constexpr int operator""_B(unsigned long long n) {
    int v=0, base=1;
    while (n) { v += (n%10)*base; n/=10; base*=2; }
    return v;
}
static_assert(101010_B == 42);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved