使用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;
}