1、使暫存器中某一位置1,保持其他位不變
把某一位清零的辦法就是先只有這一位是1,再取反,只有這一位是零,其他位都是1,再與上這個暫存器,那麼就是使其他位不變,只有這一位&0,變成0,然後再或1。
例如:
#define tim_ccmr1_oc2pe ((uint16_t)0x0008)
#define tim_ocpreload ((uint16_t)0x0008)
tmpccmr1 = timx->ccmr1;
tmpccmr1 &= (uint16_t)~((uint16_t)tim_ccmr1_oc1pe); //其實可以直接或上0x0008
tmpccmr1 |= tim_ocpreload;
timx->ccmr1 = tmpccmr1;
tmpccmr1 &= (uint16_t)~((uint16_t)tim_ccmr1_oc1pe);中,先把第四位的1取反,其他位取反後都是1,1與上任何數都是它本身,第四位的零與上任何數都是0了,也就把這位寫零了。
2、使暫存器中某一位先取反再清零,保持其他位不變
這個利用的就是乙個位異或上1就是對其取反,異或上零就是保持不變。
#define tim_ccmr1_oc2pe ((uint16_t)0x0008)
#define tim_ocpreload ((uint16_t)0xfff7)
tmpccmr1 = timx->ccmr1;
tmpccmr1 ^= (uint16_t)((uint16_t)tim_ccmr1_oc1pe); //先把第四位取反
tmpccmr1 &= tim_ocpreload; //第四位清零
timx->ccmr1 = tmpccmr1;
jquery滾動條固定在某一位置
檢視歷史訊息的時候,需要將滾動條維持在正在檢視的訊息位置。本方法是通過新增屬性data msg獲取當前的位置,offset top獲取滾動距離,demo如下 html div class box div class messagebox p 原資料1 p p 原資料2 p p 原資料3 p p da...
C語言位操作中指定的某一位數置0 置1 取反
一 指定的某一位數置1 巨集 define setbit x,y x 1 二 指定的某一位數置0 巨集 define clrbit x,y x 1 三 指定的某一位數取反 巨集 define reversebit x,y x 1 三 獲取的某一位的值 巨集 define getbit x,y x y...
mysql在表的某一位置增加一列的命令
如果想在乙個已經建好的表中新增一列,可以用諸如 alter table t1 add column addr varchar 20 not null 這條語句會向已有的表t1中加入一列addr,這一列在表的最後一列位置。如果我們希望新增在指定的一列,可以用 alter table t1 add co...