#1.特定位置の値を取得する

1417 ワード

変数値をバイナリ形式で決定する例p.219(Do it C言語)
#include<stdio.h>
unsigned char GetBit(unsigned char dest_data, unsigned char bit_num)

/*GeitBit 함수는 dest_data 변수의 bit_num번째 비트 값을 반환하는 함수이다 */

{
unsigned char bit_state = 0;

/*1바이트 변수이기 때문에 비트 이동은 0~7자리까지만 가능하다 */

if(bit_num<8) {
bit_state = dest_data & (0x01<<bit_num);
bit_state = bit_state >> bit_num;

/* dest_data 값과 0x01을 bit_num만큼 Underflow한 값을 &을 통해 연산하면 dest_data 값을 모를지라도 비트의 값을 가지고 있는 지를 0자리수의 0,1 값 판별을 통해 알아낼 수 있다 */

}

return bit_state;
/*bit_num에 지정한 비트 값을 반환한다 */

}

void main()
{
unsigned char lamp_state = 0x75; /* 16진수 0x75는 0111 0101 */
unsighed char bit_state;
int i;

printf("%X->", lamp_state);
/*16진법으로 현재 값을 출력함, 16진수를 표현하는 printf 변수 표현형은 %X */

/* 8개의 비트 표현을 위해서, 8번 반복하는데 최상위 비트부터 표현하기 위해서 7,6,5,4,3--- 순으로 비트 값을 얻는다. */
for(i=0;i<8;i++){
bit_state = GetBit(lamp_state, 7-i);
printf("%d", bit_state);

}

/* 비트 값이 모두 출력되면 줄 바꿈을 함 */

printf("\n");

}