C的位运算

用法:掩码 (&)

flags = flags & MASK; 

flags &= MASK; 

//把MASK中0位看做非透明,1位看做透明,MASK覆盖在flags上,透明位的值为flags对应位的值,非透明位的值都为0


用法:打开位 (|)

flags = flags | MASK; 

flags = MASK; 

//只有MASK为 1的位会被打开,其他位保持不变

用法:关闭位 (&~)

flags = flags&~MASK; //反转位为1的位

flags &= ~MASK;   //结果是MASK对应位为1的位被关闭,其他则不变

用法:转置位 (^)

flags = flags^ MASK; 

flags ^= MASK; 

//只有MASK为 1的位会被转置(1变0,0变1),其他位不变

用法:查看一位的值

if((flag & MASK) == MASK)  

用法:移位运算符

(<<)左位移    num << n             num乘2的n次幂

(>>)右位移num>>n 如果num非负,则除以2的n次幂

位运算是指按二进制进行的运算。在程序中,常常需要处理二进制位的问题。C/C++语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。

    在实际应用中,建议用unsigned整型操作数,因为带符号操作数可能因为不同机器结果不同。

    下面是C/C++位操作运算符列表,其中运算符优先级为从上到下递减,但<<,>>优先级相同。

C/C++位操作运算符
操作符 功能 用法
~ 位求反 ~expr
<< 左移 expr1 << expr2
>> 右移 expr1 >> expr2
& 位与 expr1 & expr2
^ 位异或 expr1 ^ expr2
| 位或 expr1 | expr2

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值