当前位置:嗨网首页>书籍在线阅读

12-用法_打开位(设置位)

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

15.3.3 用法:打开位(设置位)

有时,需要打开一个值中的特定位,同时保持其他位不变。例如,一台 IBM PC 通过向端口发送值来控制硬件。例如,为了打开内置扬声器,必须打开 1 号位,同时保持其他位不变。这种情况可以使用按位或运算符( | )。

以上一节的 flagsMASK (只有 1 号位为 1 )为例。下面的语句:

flags = flags | MASK;

flags1 号位设置为 1 ,且其他位不变。因为使用 | 运算符,任何位与 0 组合,结果都为本身;任何位与 1 组合,结果都为 1

例如,假设 flags00001111MASK10110110 。下面的表达式:

flags | MASK

即是:

(00001111) | (10110110)   // 表达式

其结果为:

(10111111)                // 结果值

MASK 中为 1 的位, flags 与其对应的位也为 1MASK 中为 0 的位, flags 与其对应的位不变。

|= 运算符可以简化上面的代码,如下所示:

flags |= MASK;

同样,这种方法根据 MASK 中为 1 的位,把 flags 中对应的位设置为 1 ,其他位不变。