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