“&= (复合按位与)”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(创建页面,内容为“&=(复合按位与) '''描述'''<br> 复合位与(&=)经常被用来设置变量或者常量的某一位为0。代码中,常被用作"清零"或者"重置"变...”)
 
 
(未显示同一用户的1个中间版本)
第1行: 第1行:
 
&=(复合按位与)
 
&=(复合按位与)
 +
 
'''描述'''<br>
 
'''描述'''<br>
 
复合位与(&=)经常被用来设置变量或者常量的某一位为0。代码中,常被用作"清零"或者"重置"变量的某位。
 
复合位与(&=)经常被用来设置变量或者常量的某一位为0。代码中,常被用作"清零"或者"重置"变量的某位。
第63行: 第64行:
 
                     位数被清零
 
                     位数被清零
 
</pre>
 
</pre>
 +
 +
[[https://www.microduino.cn/wiki/index.php/Arduino_%E8%AF%AD%E6%B3%95%E6%89%8B%E5%86%8C/zh 返回Arduino语法手册]]

2016年5月20日 (五) 03:46的最新版本

&=(复合按位与)

描述
复合位与(&=)经常被用来设置变量或者常量的某一位为0。代码中,常被用作"清零"或者"重置"变量的某位。


语法

x &= y;       // 相当于 x = x & y; 


参数
x: 字符型,整型,长整型变量 y: 字符型,整型,长整型常量


示例
先来看下按位与(&)的用法

    0  0  1  1    运算数1
    0  1  0  1    运算数2
    ----------
    0  0  0  1    (运算数1 & 运算数2) - 返回值


任何数和0相与(&)后,所有位数都会清零,所有如果myByte是一个位变量

myByte & B00000000 = 0;

任何数和1相与(&)后,所有位数都不会发生改变,同样有个变量myByte

myByte & B11111111 = myByte;

注意:由于我们可以用位操作数来处理位数据,所以在二进制常量的使用上会非常方便。某个二进制数可以用其他表达式来表示,只是不太方便理解。所以,B00000000这样写是为了看的更清楚点,不过它依然表示"0"。


所以,如果想要设置变量的某位为0或者1,而保持其他位不变的方法是,可与常量B11111100进行复合位与(&=)操作。

/*
   1  0  1  0  1  0  1  0    变量 
   1  1  1  1  1  1  0  0    掩码
   ----------------------
   1  0  1  0  1  0  0  0    返回值
  没有发生变化的位数
                     位数被清零
*/
  myByte =  10101010;
  myByte &= B1111100 == B10101000;


我们用x来替换变量上的位值,可见结果是相同的:

   x  x  x  x  x  x  x  x    variable
   1  1  1  1  1  1  0  0    mask
   ----------------------
   x  x  x  x  x  x  0  0
  没有发生变化的位数
                     位数被清零

[返回Arduino语法手册]