位运算符分为位逻辑运算符
和位移运算符
。
位逻辑运算符
运算符 | 含义 | 举例 | 规则 |
---|---|---|---|
& | 与 | a & b | 任何二进制位和0进行&运算,结果都是0;和1进行&运算结果都是原值 |
| | 或 | a | b | 任何二进制位和0进行|运算,结果都是原值;和1进行|运算结果都是1 |
~ | 取反 | ~a | 0的为1,1的为0 |
^ | 异或 | a ^ b | 相同为0,相异为1 |
位移运算符
运算符 | 含义 | 举例 | 规则 |
---|---|---|---|
<< | 左移位 | a << 2 | 空位补0,被移除的高位丢弃 |
>> | 右移位 | a >> 2 | 被移位的二进制最高位为0,右移后,空缺位补0;最高位为1,空缺位补1 |
>>> | 无符号右移位 | a >>> 2 | 被移位二进制最高位无论是0还是1,空缺位都用0补 |
位逻辑运算结果
A | B | A&B | A|B | A^B | ~A |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 0 |
位移运算结果
左移运算
下面是具体的移位步骤:
下面是具体左移示例:
右移运算
下面是具体的移位步骤:
下面是正数右移具体示例:
下面是负数右移具体示例:
规律: 正数右移之后还是正数,负数右移之后还是负数。
无符号右移
无符号右移空缺位补的永远都是0。
总结
本篇文章讲解了位运算符,代码和笔记由于纯手打,难免会有纰漏,如果发现错误的地方,请第一时间告诉我,这将是我进步的一个很重要的环节。以后会定期更新算法题目以及各种开发知识点,如果您觉得写得不错,不妨点个关注,谢谢。