Programming/C
[C] bit 연산자를 사용하여 bit set, clear, toggle 하기
임아톰
2023. 3. 14. 10:44
bit clear
비트 단위 AND 연산자를 이용하여 비트를 클리어한다.
P0 = P0 & ~(1<<4);
4번 비트를 클리어
bit clear | bit | |||||||
P0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
~(1<<4) | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
결과 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
bit set
비트 단위 OR 연산자를 이용하여 비트를 셋한다.
P0 = P0 | (1<<4);
4번 비트를 셋
bit clear | bit | |||||||
P0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
(1<<4) | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
결과 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
bit toggle
비트 단위 XOR 연산자를 이용하여 비트를 토글한다.
P0 = P0 ^ (1<<0);
0번 비트를 토글
bit clear | bit | |||||||
P0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
(1<<3) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
결과 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
코드 예시
#include <stdio.h>
void print_binary(unsigned char p)
{
printf("0b");
for (int i = 7; i >= 0; --i) { //8자리 숫자까지 나타냄
int result = p >> i & 1;
printf("%d", result);
}
printf("\n");
}
int main(){
unsigned char P0 = 0x95;
printf("P0: ");
print_binary(P0); // 0b10010101
P0 &= ~(1<<4); // NO.4 bit clear
printf("After NO.4 bit clear: ");
print_binary(P0); // 0b10000101
P0 |= (1<<4);
printf("After NO.4 bit set: ");
print_binary(P0); // 0b10010101
P0 ^= (1<<0); // NO. 0 bit toggle
printf("After NO.0 bit toggle: ");
print_binary(P0); // 0b10010100
}
반응형