“复合位或”的版本间的差异
来自YFRobotwiki
(以“ {| border="0" cellpadding="20" width="100%" |- |width="100%" valign="top" align="left"| <font color="orange" size="+1">'''描述'''</font> 复合位与(&=)经常...”为内容创建页面) |
|||
| 第42行: | 第42行: | ||
与1经过或运算的位将变为1. | 与1经过或运算的位将变为1. | ||
<pre style="color:dimgray"> | <pre style="color:dimgray"> | ||
| − | myByte | B11111111 B11111111; | + | myByte | B11111111 = B11111111; |
</pre> | </pre> | ||
| 第55行: | 第55行: | ||
位设置 | 位设置 | ||
*/ | */ | ||
| − | |||
| − | |||
</pre> | </pre> | ||
| 第71行: | 第69行: | ||
同理 | 同理 | ||
<pre style="color:dimgray"> | <pre style="color:dimgray"> | ||
| − | myByte = B10101010; | + | myByte = B10101010; |
| − | + | ||
| − | myByte | = B00000011 == B10101011; | + | myByte |= B00000011 == B10101011; |
</pre> | </pre> | ||
2017年9月10日 (日) 20:20的最后版本
|
复合位与(&=)经常被用来设置变量或者常量的某一位为0。代码中,常被用作"清零"或者"重置"变量的某位。 复合位或操作符(| =)经常用于变量和常量“设置”(设置为1),尤其是变量中的某一位。
x |= y; // 相当于 x = x | y;
x: 字符型,整型,长整型变量 y: 字符型,整型,长整型常量
先来看下按位或(|)的用法 0 0 1 1 运算元1 0 1 0 1 运算元2 ---------- 0 1 1 1(运算元1 | 运算元2) - 返回的结果 如果变量myByte中某一位与0经过按位或运算后不变。 myByte | B00000000 = myByte; 与1经过或运算的位将变为1. myByte | B11111111 = B11111111; 因此 - 设置变量的某些位为0和1,而变量的其他位不变,可与常量B00000011进行按位与运算(| =)
/*
1 0 1 0 1 0 1 0 变量
0 0 0 0 0 0 1 1 掩码
----------------------
1 0 1 0 1 0 1 1
没有发生变化的位数
位设置
*/
接下来的操作相同,只是将变量用x代替
x x x x x x x x variable
0 0 0 0 0 0 1 1 mask
----------------------
x x x x x x 1 1
没有发生变化的位数
位设置
同理 myByte = B10101010; myByte |= B00000011 == B10101011;
|
更多建议和问题欢迎反馈至 YFRobot论坛