<< 左移操作
x << n, 将x左移n位,相当于 x * 2^n ( x * 2ⁿ)
x <<= n 即 x = x << n, x = x*2ⁿ
5 * 8 = 5 * 2³ = 5 << 3 = 40
0101 左移3位, 右边补0
0101000
0010 1000 => 32 + 8 = 40
>> 右移操作
">>"是右移操作符,x >> n, 代表将x右移n位, 右移代表着什么(有什么作用)呢?
x >> n 即 x / 2ⁿ
- 2⁰位之后的bit位是直接删除吗?
- 浮点数,小数怎么表示?
x >>= 1 x = x >> 1
假设x=5,那么x的二进制为0101,x>>1表示x右移1位,即把最右边一位的1删掉,变为010,此时x=2; 仍然设x=5,二进制0101,x>>2表示x右移2位,把最右边两位的01去掉,变为01,此时x=1。 x>>=1等价于x=x>>1,跟x+=1等价于x=x+1是一个道理
PS: x >>= 1 相当于 x = x / 2;