位运算

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。
110
AND 1011
---------------
0010 --> 2
 
 
含义
Pascal语言
C语言
Java
Php
按位与
a and b
a & b
a & b
a & b
a or b
a | b
a | b
a | b
按位异或
a xor b
a ^ b
a ^ b
a ^ b
按位取反
not a
~a
~a
~a
左移
a shl b
a <<b
a <<b
a << b
带符号右移
a shr b
a >> b
a >> b
a >> b
无符号右移
/
/
a>>> b
/

 

——来自百度百科
其常见应用如下
  1. 平均值
    (x+y)>>1    表示x加y的和除以2的1次方,即>>n右移n位,实际含义相当于/2^n
  2. 2的n次方
    1 << n        左移与右移相反,表示乘以2的n次方
  3. 判断符号是否相同
    (x^y)>=0
  4. 交换两个数
    a ^= b;
    b ^= a;
    a ^= b;
  5. 判断奇偶性
    (n &1) ==1   0表示该数为偶数,1表示该数为奇数
  6. 取绝对值
    (n ^ (n >> 31)) - (n >> 31)
  7. 判断n是否是2的整数次幂
    n&(n-1) == 0

至于为什么可以这么判断,见百度百科。

 

posted @ 2022-05-23 22:42  *小白*  阅读(116)  评论(0)    收藏  举报