以下是三个对位操作的小函数,很简单,希望有小伙伴需要!
一、C语言,地址传递
//对位的设置
void Alg_SetBit1(uint16_t *u16az,uint8_t u8index){
uint16_t ui6ax;
ui6ax = *u16az;
ui6ax = (ui6ax| ((uint16_t)(0x01<<(u8index) )));
*u16az = ui6ax;
//对位的提取
bool Alg_GetBit1(uint16_t u16az,uint8_t u8index){
bool boAvail;
boAvail = ((u16az>>u8index)&(0x01));
return boAvail;
}
//对位的清除
void Alg_ClrBit1(uint16_t *u16az,uint8_t u8index){
uint16_t ui6ax;
ui6ax = *u16az;
ui6ax = (ui6ax& ~((uint16_t)(0x01<<(u8index) )));
*u16az = ui6ax;
}
二、C++ 参数引用
void Alg_SetBit1(uint16_t &u16az,uint8_t u8index){
u16az = (u16az| ((uint16_t)(0x01<<(u8index) )));
}
bool Alg_GetBit1(uint16_t u16az,uint8_t u8index){
bool boAvail;
boAvail = ((u16az>>u8index)&(0x01));
return boAvail;
}
void Alg_ClrBit1(uint16_t &u16az,uint8_t u8index){
u16az = (u16az& ~((uint16_t)(0x01<<(u8index) )));
}