#include <iostream>
int main() {
// 位运算符示例
int a = 60; // 60 = 0011 1100
int b = 13; // 13 = 0000 1101
// 按位与 (&)
int c = a & b; // 12 = 0000 1100
std::cout << "a & b = " << c << std::endl;
// 按位或 (|)
c = a | b; // 61 = 0011 1101
std::cout << "a | b = " << c << std::endl;
// 按位异或 (^)
c = a ^ b; // 49 = 0011 0001
std::cout << "a ^ b = " << c << std::endl;
// 按位取反 (~)
c = ~a; // -61 = 1100 0011
std::cout << "~a = " << c << std::endl;
// 左移 (<<)
c = a << 2; // 240 = 1111 0000
std::cout << "a << 2 = " << c << std::endl;
// 右移 (>>)
c = a >> 2; // 15 = 0000 1111
std::cout << "a >> 2 = " << c << std::endl;
return 0;
}
按位与 (&
):两个操作数中,只有当相应位都为 1
时,结果的该位才为 1
。
60 & 13
的二进制表示为 0011 1100 & 0000 1101 = 0000 1100
,即十进制的 12
。按位或 (|
):两个操作数中,只要有一个位为 1
,结果的该位就为 1
。
60 | 13
的二进制表示为 0011 1100 | 0000 1101 = 0011 1101
,即十进制的 61
。按位异或 (^
):两个操作数中,只有当相应位不同时,结果的该位才为 1
。
60 ^ 13
的二进制表示为 0011 1100 ^ 0000 1101 = 0011 0001
,即十进制的 49
。按位取反 (~
):将每个位取反,1
变成 0
,0
变成 1
。
~60
的二进制表示为 ~0011 1100 = 1100 0011
,即十进制的 -61
(注意符号位)。左移 (<<
):将所有位向左移动指定的位数,右边用 0
补齐。
60 << 2
的二进制表示为 0011 1100 << 2 = 1111 0000
,即十进制的 240
。右移 (>>
):将所有位向右移动指定的位数,左边用符号位补齐。
60 >> 2
的二进制表示为 0011 1100 >> 2 = 0000 1111
,即十进制的 15
。上一篇:c++20 协程
下一篇:c++ make_unique
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站