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

C++ 位操作概述

     編輯:關於C++

二進制字面量定義

C++ 無二進制字面量,常用八進制 (0 開頭) 或十六進制 (0x 開頭)。int a = 0x80 表示低 8 位為 1,值為 128。

移位操作

  • << 左移,右補 0。
  • >> 右移:無符號數左補 0;有符號數實現定義(GCC 補符號位)。
  • 移位數為負或超出位寬屬未定義行為。

常用位操作技巧

操作代碼
設置第 n 位為 1expr |= (1 << n);
清除第 n 位expr &= ~(1 << n);
測試第 n 位bool b = expr & (1 << n);
翻轉第 n 位expr ^= (1 << n);
清除最低位 1expr &= (expr - 1);
傳播最低位 1expr |= (expr - 1);
判斷 2 的冪次(expr & (expr - 1)) == 0
清除右側連續 1expr = ((expr | (expr - 1)) + 1) & expr;
判斷兩冪次之差(((expr | (expr - 1)) + 1) & expr) == 0

下一個相同 1 個數的數

int NextN(int N) {
    int x = N & (-N);
    int t = N + x;
    return t | ((N ^ t) / x) >> 2;
}
// 無解返回 -1

位操作是底層優化利器,掌握上述模式可大幅提升性能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved