C语言位操作复习

一.对c语言位操作的复习 2017/11/19 16:50
a&b :相同为1则为1,否则为0 // 特定位清零用&
比如:
举例:假设原来32位寄存器中的值为:0xAAAAAAAA,我们希望将bit8~bit15清零而其他位不变,
可以将这个数与0xFFFF00FF进行位与即可。a=0xAAAAAAAA, b=0xFFFF00FF, c=a&b;
a|b :有1则为1,否则为0 //特定位置1用 |
a^b : 有1则为1,否则为0 //特定位取反用^
常用位运算:与、或、非、移位
位与(&) 位或(|) 位非(取反 ~) 移位(左移<< 右移>>)
使用位运算实现功能
1<<3 等于 0b1000, 即bit3为1
1<<5 等于 0b100000, 即bit5为1
(1<<3)|(1<<5) 等于 0b101000
扩展一下:如何只熄灭中间1颗而点亮旁边2颗
ldr r0, =((0<<3) | (1<<4) | (0<<5))
总结:要置1用|,清零用&,要取反用^,~和<< >>用来构建特定二进制数
(1)如果你要的这个数比较少位为1,大部分位为0,则可通过连续很多个1左移n位得到。
(2)如果你想要的数是比较少位为0,大部分位为1,则可通过先构建其位反数,然后再位取反来得到。举例说明:
1.给定一个整型数a,设置a的bit3,保证其他位不变。 设置即为1,清除即为0
a=a|(1<<3)
2.给定一个整形数a,设置a的bit3~bit7,保持其他位不变。
a=a|(0b11111<<3) == a |= (0x1f<<3) //左移3位说明从bit3开始, 0x1f
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值