刷Leetcode的简单1523题看了官方做法,发现自己之前也见过用>>和<<做的,都没搞懂。乘或除以都能用位运算符号,看别的博说位运算符计算量比数学运算符少(?),故总结一下:
位运算符跟二进制相关,本人对二进制也不太了解,泪目
符号 | 名 | 理解 | 操作 |
& | 与 | 和的意思 | a, b同一个位置是1和1才能得到1 |
| | 或 | 或者的意思 | a, b同一个位置有1就能够得到1 |
^ | 异或 | 可以当做异否? | a, b同一个位置异的话,得到1 |
~ | 取反 | 非的意思 | a每个位置都反一次 |
<< | 左移动 | ←左推掉n个数,右缺位补0 | a乘2的n次方 |
>> | 右移动 | →右挤掉n个数,左缺位补0 | a除以2的n次方 |
十进制转二进制:
①整数手算如下(负数没搞懂,待补):