当前位置:首页C++程序设计 > 正文

C++中的位运算:与(&)、或(|)、非(~)异或(^)、左移、右移

作者:野牛程序员:2023-02-24 10:36:32C++程序设计阅读 2687

C++ 中的位运算符包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)等。

  1. 按位与(&):将两个数的二进制表示进行按位与运算,得到的结果是两个数的对应二进制位上的值均为1时才为1,否则为0。例如:

unsigned int a = 0b1100;  // a 的值为 12
unsigned int b = 0b1010;  // b 的值为 10
unsigned int c = a & b;   // c 的值为 0b1000,即 8
  1. 按位或(|):将两个数的二进制表示进行按位或运算,得到的结果是两个数的对应二进制位上的值只要有一个为1就为1,否则为0。例如:

unsigned int a = 0b1100;  // a 的值为 12
unsigned int b = 0b1010;  // b 的值为 10
unsigned int c = a | b;   // c 的值为 0b1110,即 14
  1. 按位异或(^):将两个数的二进制表示进行按位异或运算,得到的结果是两个数的对应二进制位上的值不同才为1,否则为0。例如:

unsigned int a = 0b1100;  // a 的值为 12
unsigned int b = 0b1010;  // b 的值为 10
unsigned int c = a ^ b;   // c 的值为 0b0110,即 6
  1. 按位取反(~):对一个数的二进制表示进行按位取反运算,得到的结果是将每一位上的0变为1,1变为0。例如:

unsigned int a = 0b1100;  // a 的值为 12
unsigned int b = ~a;      // b 的值为 0b...0011  (和机器相关的整数位数)
  1. 左移(<<):将一个数的二进制表示向左移动指定的位数,得到的结果是在数的末尾补上指定数量的0。例如:

unsigned int a = 0b0001;  // a 的值为 1
unsigned int b = a << 2;  // b 的值为 0b0100,即 4
  1. 右移(>>):将一个数的二进制表示向右移动指定的位数,得到的结果是将数的末尾的指定数量的位数移除,对于无符号数,在左侧插入0。例如:

unsigned int a = 0b1100;  // a 的值为 12
unsigned int b = a >> 2;  // b 的值为 0b0011,即 3

需要注意的是,位运算符只能作用于整数类型,不能作用于浮点数类型或者其他非整数类型。此外,位运算符的优先级较低,如果与其他运算符混合使用,需要使用括号来明确优先级。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击