Bit operation

  • n << 1 向左移位,低位变高位,低位0补齐

  • n >> 1 向右移位,高位变低位

  • n & 1 得到最低位

  • (n >> 31) & 1 得到最高位

  • (n & 1) << 31 最低位和最高位互换

一个数最多左移或右移31位,然后留下最后一个bit,再移一定是0

unsigned integer range: 0 ~ (2^32-1) = 0 ~ (1 << 32 - 1)

signed integer range: -2^31 ~ (2^31 - 1) = (1 << 32) ~ (1 << 31 - 1)

if n < (1 << 31), n is positive; else n is negative, convert unsigned n to signed n:

unsigned_integer = signed_integer+(1 << 32)

Last updated