第三章 按位运算符(三)

按位运算符

按位运算符有6个如下表:

运算符 说明
& 按位与运算符
按位或运算符
^ 按位异或(EOR)运算符
~ 按位非运算符,也成为1的补位运算符
<< 按位左运算符
>> 按位右运算符

这些运算符只能用与整数类型。~运算符是一元运算符,只处理一个操作数,其他的都是二元运算符

按位与运算符

假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101
运算符 描述 实例
& 按位与操作,按二进制位进行”与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; (A & B) 将得到 12,即为 00001100

按位或运算符

假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101
运算符 描述 实例
按位或运算符,按二进制位进行”或”运算。运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1; (A | B) 将得到 61,即为 00111101

按位异或运算符

假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101
运算符 描述 实例
^ 异或运算符,按二进制位进行”异或”运算。运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0; (A ^ B) 将得到 61,即为 00110001

按位非运算符

假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101
运算符 描述 实例
~ 取反运算符,按二进制位进行”取反”运算。运算规则:~1=0; ~0=1; (~A ) 将得到 -61,即为 11000011,一个有符号二进制数的补码形式。

按位左移运算符

假设如果 x = 13,且 y = 6,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101
运算符 描述 实例
<< 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 A << 2 将得到 240,即为 11110000

按位右移运算符

运算符 描述 实例
>> 二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 A >> 2 将得到 15,即为 00001111

按位运算符的op=用法

所有的二元按位运算符都可以在op=形式的赋值语句中使用,用~运算符例外,他是一元运算符例如:

1hs op=rhs;

等价于

1hs=1hs op (rhs);

例如:

value <<=4;

其作用是将整数变量value的内容向左移动四位。等效于:

value = value << 4;

二元运算符可以这样使用。例如:

value &=0xFF;

其中value是一个整数变量,就等价于:

value = value& 0xFF;

其作用是使最右边的8位保持不变,其他的位置都设为0