位运算

小技巧

  • 英文字符与空格或操作将其转换为小写

    1
    2
    (char) ('D' | ' ')   // d
    (char) ('d' | ' ') // d
  • 英文字符与下划线与操作将其转化为大写

    1
    2
    (char) ('d' & '_')  // D
    (char) ('D' & '_') // D
  • 英文字符与空格异或操作进行大小写互换

    1
    2
    (char) ('D' ^ ' ')  // d
    (char) ('d' ^ ' ') // D
  • 判断两个数是否异号(通过商或者乘积的方式,容易会导致结果溢出)

    1
    2
    int x=-2; int y=1;
    System.out.println((x^y)<0); // true

n &(n-1)

作用就是将最后一位1变成0

位 1 的个数

2 的幂

a ^ a =0 a ^ 0= a

异或运算满足交换律和结合律

只出现一次的数字

丢失的数字