Bits

基本概念

  • 有符号数是利用二进制最高位表示,符号 0 代表正 1 代表负,无符号最高位的 0、1 代表正常的数

  • >>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补 0,而若该数为负数,则右移后高位同样补 0

  • >>表示右移,如果该数为正,则高位补 0,若为负数,则高位补 1

  • <<表示左移,不分正负数,低位补 0

操作符

&、|、^、~、<<、>>

解题知识点

  • ==求 n 的第 k 位数字: n >> k & 1==

  • ==x = x & (x - 1) 打掉最低位的 1==

  • ==x & -x lowbit(n),得到最低位的 1, -x得到反码再加 1==

  • 异或(两位相同为 0,不同为 1)

    • x ^ 0 = x

    • x ^ x = 0

    • x ^ y ^ x = y

    • x ^ y ^ x = (x ^ y) ^ x = x ^ (y ^ x)

  • 去除小数

    • ~~12.22

    • 12.22 >> 0

    • 12.22 | 0

  • 位运算代替乘除2

    • 24 >> 1

    • 24 << 1

  • 判断奇偶数

    • x & 1 === 1 or x & 1 === 0 判断奇偶 x % 2 === 1

  • 不增加变量实现两数交换

    ;[a, b] = [b, a]
    
    a = a + b
    b = a - b
    a = a - b
    
    a = a ^ b
    b = a ^ b
    a = a ^ b

questions

Last updated