位操作

why 2019-10-30 PM 4239℃ 1条

寄存器操作:读-修改-写

a |= (1<<x) //第x位写1

a &= ~(1<<x) //第x位写0

(a & (1<<x)) == a //判断1,等号左边括号不能省略

(a & (1<<x)) ==0 //判断0

a>>n //除法a/ 2^n

a<<n //乘法a*2^n

某位置1:
a &= ~(1<<x) //置0
a |= (1<<x) //置1

多位置1:
a &= ~((1<<x)|(1<<y)|(1<<z)) //置0
a |= (1<<x)|(1<<y)|(1<<z) //置1

x-y(n)位置m:
a &= ~(0xf<<x) //置零,n=4(0xf),n=6(0x3f)
a |= (m<<x) //置m

读x-y(n)位:
temp = a & (0xf<<x) //其他位置零
temp >>= x //读

x-y(n)位值加m:
temp = a & (0xf<<x) //其他位置零
temp >>= x //读出x-y位的值
a &= ~(0xf<<x) //x-y置零
temp += m //+m
temp <<= x
a |= temp

判断:
a & (1<<x) //与操作,如果相应位是0,则结果是0,如果相应位是1,则结果是1.
b | (0<<x) //或操作,如果相应位是0,则结果是0,如果相应位是1,则结果是1.

标签: none

非特殊说明,本博所有文章均为博主原创。

上一篇 MDK&IAR Error
下一篇 字符转数字

评论啦~



唉呀 ~ 仅有一条评论


  1. 嘿嘿嘿
    嘿嘿嘿

    厉害哦,教教我

    回复 2019-10-30 16:20