# 비트 set ,claer 연습

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
 
int main()
{
    unsigned char data1 = 0xad;
    unsigned char data2 = 'a';
    
    //B5로 만들기
    data1 &=~(0x7<<3); //3bit를 clear
    data1 |= 0x6 <<3;  //110 삽입
//clear를 하고 삽입한는 방식이 일반적
 
    //대문자 A로 만들기
    data2 ^= 0x1 <<5//a는 0x61,A는 0x41
                      //5번째 자리 반전 
    
    printf("%0x\n",data1);
    printf("%c\n",data2);
}
cs
<개념>

1.set

data = data | 0x20;    //data 5번 bit만 set
=> data = data | 0x1 << 5;
=> data |= 0x1 << 5;   (이런 표기법을 쓰도록 하자)

2.claer


data &= ~(0x1 <<5);


3.reverse


data ^= 0x1 <<5;



*응용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//값을 입력하여 신호등을 표시합니다.//
 
#include <stdio.h>
void main()
{
    int i;
    unsigned char sign;
    unsigned char data;
    char str[4][9]={"녹색불""자회전불""노란불""빨간불"};
    printf("값을 입력하세요(1, 2, 3, 4, 8) : ");
    scanf("%d"&sign);
    for(i=3;i>=0;i--)
    {
        data=(sign&(1<<i))>>i;
        printf("%s : ", str[i]);
        data==1 ? printf("on\n"): printf("off\n");
    }
}
cs


+ Recent posts