共用体を用いた1バイトデータの各ビット毎のデータへのアクセス例です。
#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 |