定义
掩码掉一些东西,留下一些东西就是掩码存在的意义

unsigned char MASK = 1 << 1;unsigned char flag = 0x96;
功能
- 打开位 (某一位置1) (flag |= mask)
 - 关闭位 (某一位置0) (flag &= ~mask)
 - 转置位 (某一位反转) (flag ^= mask)
 - 查看某一位的值 if((flag & mask))
 
生成
#include<stdio.h>#include<stdlib.h>void binDis2(int data) {int i = 8;while (i--){if (data & (1 << i)) {printf("1");}else {printf("0");}if (i % 4 == 0) {printf(" ");}}printf("\n");}int main() {int mask = 0;/*int mask = (1<<6) | (1<<5) | (1<<4) | (1<<3) | (1<<2)0100 00000110 00000111 00000111 10000111 11000111 1100*/for (int i = 6; i >= 2; i--) {mask |= (1 << i);binDis2(mask);}system("pause");return 0;}
功能代码
#include<stdio.h>#include<stdlib.h>void binDis2(int data) {int i = 8;while (i--){if (data & (1 << i)) {printf("1");}else {printf("0");}if (i % 4 == 0) {printf(" ");}}printf("\n");}// 4. 查看某一位的值 if((flag & mask))//要想操作位先求maskvoid viewSomeBitValue() {int a = 0x55aa; // 0101 0101 1010 1010int mask = 1 << 6; // 0000 0000 0100 0000// & 两个位都为1时,结果才为1if (a & mask) { // 左移6位,从上面可以看出&的时候,是0,左移7位 是1printf("leds is on");}else {printf("leds is off");}}void bitSetNegate() { // 取反int a = 0x55aa; // 0101 0101 1010 1010 0101 0101 0101 0101// 0000 0000 1111 1111// 0101 0101 0101 0101// 1<<7 0000 0000 1000 0000int mask = 1 << 7 | 1 << 6 | 1 << 5 | 1 << 4 | 1 << 3 | 1 << 2 | 1 << 1 | 1 << 0;binDis(a);//^两个位相同为0,相异为1a ^= mask;binDis(a);}void bitSetOne() { //置1 将0x55aa 二进制11位置1int a = 0x55aa; // 0101 0101 1010 1010 0101 1101 0101 0101int mask = 1 << 11; // 0000 1000 0000 0000a = a | mask;binDis(a);}void bitSetZero() { //将0101 0101 1010 1010倒数第3位置0int a = 0x55aa; // 0101 0101 1010 1010 0101 0101 1010 1010int mask = 1 << 3; // 0000 0000 0000 1000 ~1111 1111 1111 0111// 结果 &0101 0101 1010 0010binDis(a);a = a & (~mask);binDis(mask);binDis(~mask);binDis(a);}int main() {int mask = 0;for (int i = 6; i >= 2; i--) {mask |= (1 << i);//binDis2(mask);}//viewSomeBitValue();//bitSetOne();bitSetZero();system("pause");return 0;}
