c·c++/c 프로그래밍

bit field로 2진수 출력하기

바로이순간 2012. 3. 22. 11:52

#include<stdio.h>

 

typedef unsigned char BYTE;

 

struct bit {

  BYTE bit1:1;

  BYTE bit2:1;

  BYTE bit3:1;

  BYTE bit4:1;

  BYTE bit5:1;

  BYTE bit6:1;

  BYTE bit7:1;

  BYTE bit8:1;

  BYTE reservation[3];

};

 

union bitgroup {

  BYTE size[4];

  struct bit bts;

};

 

void binary(BYTE, int);

 

int main(void) {

  union bitgroup bg;

  // 가장 낮은 비트가 bit1에 들어가야합니다.

  bg.bts.bit1=1;

  bg.bts.bit2=0;

  bg.bts.bit3=1;

  bg.bts.bit4=1;

  bg.bts.bit5=0;

  bg.bts.bit6=0;

  bg.bts.bit7=1;

  bg.bts.bit8=0;

  int mask=128;


  printf("%d\n", bg.size[0]); // 십진수 77

  while(bg.size[0]<mask) mask=mask/2;

  binary(bg.size[0],mask);


  return 0;

}

 

void binary(BYTE size, int mask) {

  if(mask==0) return;

  if(size&mask) printf("1 ");

  else printf("0 ");

  binary(size, mask/2);  

}