Java位运算及用途

&:与,且

性质:两个位都是1时,结果是1,否则为0
用途:

  1. 清零:任意整数和整数0做与运算,所有位都是0,得出的结果是0
  2. 取出指定位:任意位和位1做与运算,结果是不变,例如x=10101110取出低4位,只需要和y=00001111做与运算,就可以得出z=00001110
  3. 判断奇偶:a&1 == 0等价于a % 2 == 0,二进制中,能表示基数,那么二进制的最后一位一定是1。
  4. 将最后一位变为0:num & (num - 1)会将num的二进制表示的最后一位的1变成0
  5. 判断一个数是不是2的幂:(num & (num - 1)) == 0,如果一个数是2的次幂,这个数的二进制表示中,一定只有一个位是1,这个数与它减1的数做&运算的结果一定是0
  6. a & b的结果小于等于min(a,b)
  7. a & b,当b是(2的次幂)-1时,与运算的值是分散最广的

|:或

性质:两个位都是0时,结果是0,否则为1
用途:
对一个数据的某些位设置为1

^:异或;

性质:两个位相同为0,不同为1;x ^ x = 0 , x ^ 0 = x;遵循交换律、结合律
用途:

  1. 交换两个数
  2. 与0异或值不变
  3. 翻转指定位

~:位取反

用途:

  1. 使整数的最后一位为零,a & ~1

<<:位左移

>>:位右移

Guess you like

Origin blog.csdn.net/qq_30038111/article/details/109559959