通八洲科技

c++的位运算怎么用 与、或、异或、移位操作详解【底层知识】

日期:2026-01-02 00:00 / 作者:尼克
位运算是直接操作整数二进制表示的底层操作,常用于系统编程、算法优化等;与运算(&)逐位比较,同为1才得1,用于掩码提取(如x & 0xF取低4位)、判断奇偶(x & 1)或清零特定位(如x & ~(1

位运算是直接操作整数二进制表示的底层操作,在C++中高效且常用于系统编程、算法优化、状态压缩、加密、硬件交互等场景。它不经过高级抽象,直击内存中的比特(bit),因此理解清楚每种运算的逻辑和边界行为至关重要。

与运算(&):提取特定位或清零

按位与是逐位比较两个操作数,仅当两对应位都为1时结果才为1,否则为0。最常用在“掩码提取”和“清零特定位置”。

或运算(|):设置特定位

按位或是逐位比较,只要有一个为1结果就为1。主要用途是“置位”——把某些位强制设为1,而不影响其他位。

异或运算(^):翻转、交换、判等

按位异或:相同为0,不同为1。它有三大关键性质:自反性(a ^ a = 0)、恒等性(a ^ 0 = a)、可交换结合性。这些让异或非常强大。

移位运算(>):高效乘除与布局操作

左移(>):向右移动n位,左边补符号位(算术右移)或0(逻辑右移),C++中对有符号数的右移行为由编译器定义,但主流平台(如x86/x64)对 signed int 执行算术右移(保持符号)。