C语言位操作之三

1、给定一个整型数a,设置a的bit3,保证其他位不变。a = a | (1<<3) 或者 a |=(1<<3)2、给定一个整型数a,设置a的bit3~bit7,保证其他位不变。a = a | (0b11111<<3) 或者 a |= (0x1f<<3)3、给定一个整型数a,清楚a的bit3~bit7,保证其他位不变...
摘要由CSDN通过智能技术生成

1、给定一个整型数a,设置a的bit3,保证其他位不变。

a = a  |  (1<<3)   或者   a |= (1<<3)

2、给定一个整型数a,设置a的bit3~bit7,保证其他位不变。

a = a | (0b11111<<3)   或者 a |= (0x1f<<3)

3、给定一个整型数a,清楚a的bit3~bit7,保证其他位不变。

a = a & (~(1<<15))   或者 a &= (~(1<<15)) 

4、给定一个整型数a,清楚a的bit15~bit23,保证其他位不变。

a = a & (~(0x1ff<<15))   或者 a &= (~(0x1ff<<15)) 

5、给定一个整型数a,取出a的bit3~bit8。

思路:先将这个数bit3~bit8不变,其余位清零,然后右移三位。

a &= ((0x3f)<<3)

a >>= 3

6、用C语言给一个寄存器的bit7~bit17赋值937(其余位不受影响)。

思路:需要先清零,再赋值。

a &= ~(0x7ff<<7)

a |= 937<<7

7、用C语言给一个寄存器的bit7~bit17中的值加17(其余位不受影响)。

思路:先读出原来的值,再加上17,再将原来位置清零,再将加过的值写入原来的位置。

tmp 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值