# 비트 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 |
'Embedded C언어' 카테고리의 다른 글
[임베디드 C언어_Day6]LED + keypad(비트필드 구조체 사용)구현 (0) | 2018.10.15 |
---|---|
[임베디드 C언어_Day5]CallBack (0) | 2018.10.15 |
[임베디드 C언어_Day4]LED + keypad 구현 (1) | 2018.10.15 |
[임베디드 C언어_Day3]교차 개발(cross development)(linux + Tera Term) (0) | 2018.10.11 |
[임베디드 C언어_Day1]정수의 승격(Integer Promotion) (0) | 2018.10.11 |