C语言中关于位运算的一些积累

  在做上个项目的过程中,看到了一些地方使用来位运算来进行FLAG的判断。现在大概的总结一个它在使用时的意义。
  先说一下各种位运算符的含义吧

   Bitwise Left Shift Operator (<<) 按位左移运算符
For example: temp = 14 << 2
The variable temp has a value of 56 because 14 (00001110 in binary) shifted left two bits equals 56 (00111000 in binary).

   Bitwise Right Shift Operator (>>) 按位右移运算符
For example:temp = -14 >> 2
右移时与左移有些不同,在进行向右移动时,要使用最左侧的符号位的值进行从左侧进行补充。14 (11110010 in binary) shifted right two bits equals -4 (11111100 in binary).

   Bitwise AND Operator (&) 按位与运算符
0101 (expression1)
1100 (expression2)
----
0100 (result)
感觉就是在expression1取出expression2为1所对应的那几位的值。

   Bitwise OR Operator (|) 按位或运算符
0101 (expression1)
1100 (expression2)
----
1101 (result)
将expression1中的expression2为1所对应的那几位的值赋为1


下面是两个程序中的语句:

if(iqs_data_flg & ( 1 << iqs_cnt ))

我理解这个语句就应该是将iqs_data_flg 中的第iqs_cnt位的值取出来,并进行判断。


iqs_data_flg |= ( 1 << iqs_cnt )

我理解这个语句应该是将iqs_data_flg 的第iqs_cnt 位的值置为1。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值