位操作的实现
位操作一般以下几种操作:
- 位的清零操作
- 位的置位操作
- 位的翻转操作
1. 位的清零操作
> DATA &= (~DATA_MASK)
示例代码:
#include "stdio.h"
#define DATA_MASK (0x07) /*对低3位操作掩码值*/
int main(){
int data = 0x1a;
printf("data before covert : %x\r\n",data);
data &= (~DATA_MASK); /*低3位清零*/
printf("data after covert : %x\r\n",data);
getch();
return 0;
}
运行结果: 0x18
2. 位的置位操作
DATA |= DATA_MASK;
示例代码:
#include "stdio.h"
#define DATA_MASK (0x07) /*对低3位操作*/
int main(){
int data = 0x1a;
printf("data before covert : %x\r\n",data);
data |= DATA_MASK;
printf("data after covert : %x\r\n",data);
getch();
return 0;
}
运行结果: 0x1f
3. 位的翻转操作:
> DATA1 = DATA2 = DATA;
> DATA1 &=(~DATA_MASK);
> DATA2 = (~DATA2) & DATA_MASK;
> DATA = DATA1 | DATA2;
示例代码:
#include "stdio.h"
#define DATA_MASK (0x07) /*对低3位操作*/
int main(){
int data = 0x1a;
int data1,data2;
data1 = data2 = data;
printf("data before covert : %x %x %x\r\n",data,data1,data2);
data1 &= (~DATA_MASK);
data2 = (~data2) & (DATA_MASK);
data = data1|data2;
printf("data after covert : %x %x %x\r\n",data1,data2,data);
getch();
return 0;
}
运行结果: 0x18 0x05 0x1d
此文只要是实现位的翻转,有些勻杂,有待改善,暂记!