第三章 按位运算符(三)
按位运算符
按位运算符有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