共用体(1ビット毎のデータアクセス)

共用体を用いた1バイトデータの各ビット毎のデータへのアクセス例です。

 共用体(list_69.c)
#include <stdio.h>

typedef union {
    unsigned char byte;
    struct {
        unsigned char bit0 : 1;
        unsigned char bit1 : 1;
        unsigned char bit2 : 1;
        unsigned char bit3 : 1;
        unsigned char bit4 : 1;
        unsigned char bit5 : 1;
        unsigned char bit6 : 1;
        unsigned char bit7 : 1;
    } BIT;
}BYTE;

BYTE bit[5];

int main()
{
    int i,j;
    // 全ビットを1に[11111111=255]
    for(i=0;i<5;i++){
        for(j=0;j<8;j++){
            bit[i].byte |= (0x01<<j);
        }
    }
    for(i=0;i<5;i++){
        printf("%d:%d\n",i,bit[i].byte);
    }
    // 先頭ビットを0に[01111111=127]
    bit[0].BIT.bit7 = 0;
    bit[1].BIT.bit7 = 0;
    bit[2].BIT.bit7 = 0;
    bit[3].BIT.bit7 = 0;
    bit[4].BIT.bit7 = 0;
    for(i=0;i<5;i++){
        printf("%d:%d\n",i,bit[i].byte);
    }
    return 0;
}

実行結果
0:255
1:255
2:255
3:255
4:255
0:127
1:127
2:127
3:127
4:127
inserted by FC2 system