位运算
比较简单,直接一张图然后简单解释下就好了
3<<2 3向左位运算2位
- 首先将3这个十进制转换成32位的2进制 -->0000-0000 0000-0000 0000-0000 0000-0011
- 然后将二进制向左移动两位,整体要保持32位的2进制,所以左边被舍弃了两位,右边补两个0 -->00-0000 0000-0000
0000-0000 0000-001100 - 00-0000 0000-00000000-0000 0000-001100转换成十进制是12 ,所以3<<2的值就是12
6>>2 6向右位运算2位
- 首先将6这个十进制转换成32位的2进制 -->0000-0000 0000-0000 0000-0000 0000-0110
- 然后将二进制向友移动两位,整体要保持32位的2进制,所以右边被舍弃了两位,左边补两个0 -->000000-0000 0000-0000
0000-0000 0000-001 - 000000-0000 0000-00000000-0000 0000-001转换成十进制是12 ,所以6>>2的值就是1
总结下规律
<<:其实就是乘以2的移动的位数次幂。
>>:就是除以2的移动的位数次幕。
位运算高效乘法运算
乘法以 2*8为栗
传统的 2*8 底层的运算实际上是将 2 和 8 转换成2进制,然后再进行乘法运算,解释如下:
1000
* 0010
------
0000
1000
------
10000=16
使用位运算来思考这道题,8可以分解为2的三次方,那 计算 2*8 就可以把2的二进制(0000-0000 0000-0000 0000-0000 0000-0010)向左移动三位补齐后得到二进制(0-0000 0000-0000 0000-0000 0000-0010000)结果为16