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
Was this helpful?