java位运算的奇巧淫技

位运算基础知识

  • 在处理整形数值时,可以直接对组成整形数值的各个位进行操作。
  • 位运算符:&(与) |(或) ^(异或) ~(非/取反)
  • >>将二进制位右移操作 <<将二进制位左移操作
  • >>>用0填充高位 >>用符号填充高位,没有<<<运算符
  • 对于int型,1<<35与1<<3是相同的(因为int只有32位),而左边的操作数是long型时需对右侧操作数模64
a b ~a a&b a|b a^b
1 1 0 1 1 0
0 1 1 0 1 1
0 0 1 0 0 0

java位运算的奇巧淫技

判断奇偶数

  • n&1==1,则n为奇数
  • n&1==0,则n为偶数

异或,相同为0,不同为1

异或可以理解为不仅位的加法

1+1=0,0+0=0,1+0=1(把加号换成异或结果是一样的)

异或的自反性

  • A^A^B = A^0 = A
  • A^A = 0

异或的交换律

  • 可任意交换运算因子的位置,结果不变

异或的结合律

  • (a^b)^c == a^(b^c)

来几道题目练练手:

详见博客:java位运算的奇巧淫技相关算法题目详解

猜你喜欢

转载自blog.csdn.net/qq_43594119/article/details/108713685
今日推荐