嵌入式杂谈(问题解决二:位运算符在嵌入式编程中的应用)
-
与(&):两个操作数的对应位都为1时,结果的该位为1,否则为0。
-
异或(^):两个操作数的对应位不同时,结果的该位为1,否则为0。
-
取反(~):对操作数的每一位取反,1变0,0变1。
-
或(|):两个操作数的对应位有一个为1时,结果的该位为1,否则为0。
-
左移(
<<
):将二进制位向左移动,右侧补0。 -
右移(
>>
):将二进制位向右移动,左侧补0(逻辑右移)或补符号位(算术右移)。 -
&=
:按位与后赋值。 -
|=
:按位或后赋值。 -
^=
:按位异或后赋值。 -
<<=
:左移后赋值。 -
>>=
:右移后赋值。
运算符 | 名称 | 功能描述 | 示例 | |||
---|---|---|---|---|---|---|
& | 与(AND) | 两个操作数的对应位都为1时,结果的该位为1,否则为0。 | 0b1010 & 0b1100 = 0b1000 | |||
^ | 异或(XOR) | 两个操作数的对应位不同时,结果的该位为1,否则为0。 | 0b1010 ^ 0b1100 = 0b0110 | |||
~ | 取反(NOT) | 对操作数的每一位取反,1变0,0变1。 | ~0b1010 = 0b0101 (假设8位) | |||
` | ` | 或(OR) | 两个操作数的对应位有一个为1时,结果的该位为1,否则为0。 | `0b1010 | 0b1100 = 0b1110` | |
<< | 左移(Left Shift) | 将二进制位向左移动,右侧补0。 | 0b1010 << 2 = 0b101000 | |||
>> | 右移(Right Shift) | 将二进制位向右移动,左侧补0(逻辑右移)或补符号位(算术右移)。 | 0b1010 >> 2 = 0b0010 | |||
&= | 与后赋值 | 对两个操作数进行按位与运算,并将结果赋值给左操作数。 | a &= b 等价于 a = a & b | |||
` | =` | 或后赋值 | 对两个操作数进行按位或运算,并将结果赋值给左操作数。 | `a | = b等价于 a = a | b` |
^= | 异或后赋值 | 对两个操作数进行按位异或运算,并将结果赋值给左操作数。 | a ^= b 等价于 a = a ^ b | |||
<<= | 左移后赋值 | 将左操作数的二进制位向左移动,并将结果赋值给左操作数。 | a <<= 2 等价于 a = a << 2 | |||
>>= | 右移后赋值 | 将左操作数的二进制位向右移动,并将结果赋值给左操作数。 | a >>= 2 等价于 a = a >> 2 |
原文地址:https://blog.csdn.net/JK03820/article/details/145170488
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!