对于<<
, >>
两种运算符,可以这样说:
a<<b=a∗2b
a>>b=a/2b
但是对于>>>
...不好说了。
这些位运算在计算机中怎样运算的?
大家都知道,整数在计算机中是以二进制存储的:
0=(0)2
4=(100)2
8=(1000)2
20=(10100)2
666=(1010011010)2
左移(<<
)
a<<b就是在a的二进制后面添上b个0,所以a<<b=a∗2b
拿20当例子,
20<<1=(10100)2<<1=(101000)2=40,
20<<2=(10100)2<<2=(1010000)2=80。
右移(>>
)
>>
跟<<
相反,a>>b就是在a的二进制后面去掉b位,所以a>>b=a/2b
还是拿20当例子:
20>>1=(10100)2>>1=(1010)2=10,
20>>2=(10100)2>>2=(101)2=5
如果末尾不是0呢?照样去:
21>>1=(10101)2>>1=(1010)2=10
无符号/逻辑右移(>>>
)
看这里