使用union实现位操作
C语言关键字union使结构体里的变量共享一段内存
eg:
#include <iostream>
using namespace std;
typedef struct {
//也可以全部改用unsigned char, 会好看些
char bit0 : 1;
char bit1 : 1;
char bit2 : 1;
char bit3 : 1;
char bit4 : 1;
char bit5 : 1;
char bit6 : 1;
char bit7 : 1;
}bits;
typedef union {
char data_char;
bits data_bits;
}utype;
typedef struct {
int port;
utype LED;//这样就可以对8个LED单独控制
}TEST;
int main(){
TEST test;
test.port = 01;
test.LED.data_char = 0x00;//全灭
printf("%d\n", test.LED.data_bits.bit0);//0
printf("%d\n", test.LED.data_bits.bit1);//0
printf("%d\n", test.LED.data_bits);//0
test.LED.data_bits.bit1 = 1;//针对第一位操作, 点亮它
printf("%d\n", test.LED.data_bits.bit0);//0
printf("%d\n", test.LED.data_bits.bit1);//0
printf("%d\n", test.LED.data_bits);//2
return 0;
}