按位运算符是把操作数看作是一系列单独的位,而不是一个数字值。他们只处理整型变量或整型常量这样的操作数,所以只可以使用数据类型short、int、long、signed char和char,以及这些类型的无符号变体。
按位运算符在编程应急设备中非常常用,因为设备的状态经常被表示为一系列单独的标识符,在需要把一组开关标识符装入单个变量中时,按位运算符也非常有用。
按位运算符有六个:
- & 按位与(AND)
- | 按位或(OR)
- ^ 按位异或(EOR)
- ~ 取反(NOT)
- >> 右移
- << 左移
AND运算符:如果对应的位都是1,那么结果就是1;如果任一位或两个位都是0位,则结果就是0;
OR运算符:如果任一位操作数位是1,那么结果就是1;如果两个操作数位都是0,那么结果就是0;
EOR运算符:如果两个操作数都是1或都是0时,那么结果是0;如果两个操作数一个为0,另一个为1,则结果是1;
NOT运算符:对操作数的位求反:1变成0,0变成1。
移位运算符:这些运算符将一个整型变量的值向左或向右按指定的位数移动。运算符>>向右移动,而运算符<<向左移动。“离开”任一端的位将丢失。如果位不丢失,向左移动n位相当于和2相乘了n次,向右移动n位相当于除以2的n次方。