Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

문타쿠, 공부하다.

[C언어 코딩 도장] Unit 23. 비트 연산자 사용하기 본문

C언어/C언어 코딩 도장

[C언어 코딩 도장] Unit 23. 비트 연산자 사용하기

개발새발 문타쿠 2023. 8. 28. 22:07

INTRO

비트

  • 2진수(0, 1)를 저장하는 단위

바이트

  • 8비트 = 1바이트

"비트 연산자"

연산자 설명 연산자 설명
& 비트 AND &= 비트 AND 연산 후 할당
| 비트 OR |= 비트 OR 연산 후 할당
^ 비트 XOR ^= 비트 XOR 연산 후 할당
~ 비트 NOT    
<< 비트를 왼쪽으로 시프트 <<= 비트를 왼쪽으로 시프트한 후 할당
>> 비트를 오른쪽으로 시프트 >>= 비트를 오른쪽으로 시프트한 후 할당
  • 비트 단위(2진수)로 연산하는 연산자
  • 비트로 옵션을 설정할 때 주로 사용하며, 저장 공간을 아낄 수 있는 장점이 있다.(플래그 방식)
XOR_두 비트가 다를 때 1
0 0 0
0 1 1
1 0 1
1 1 0

23.1 비트 AND, OR, XOR 연산자 사용하기

#include <stdio.h>

int main(void)
{
	unsigned char num1 = 1;	// 0000 0001
	unsigned char num2 = 3;	// 0000 0011

	printf("%u\n", num1 & num2);	// 0000 0001 = 1
	printf("%u\n", num1 | num2);	// 0000	0011 = 3
	printf("%u\n", num1 ^ num2);	// 0000 0010 = 2

	return 0;
}

23.2 비트 NOT 연산자 사용하기

#include <stdio.h>

int main(void)
{
	unsigned char num1 = 162;	// 1010 0010
	unsigned char num2;

	num2 = ~num1;			// 0101 1101 = 93

	printf("%u\n", num2);

	return 0;
}

"unsigned char 자료형을 사용하는 이유?"

unsigned char는 부호 없는 정수이며, 1바이트(8비트) 크기이다.

비트 연산으로 인해 부호 비트가 영향을 받지 않도록 부호 없는 자료형을 사용하였다.


23.3 시프트 연산자 사용하기

#include <stdio.h>

int main(void)
{
	unsigned char num1 = 3;		// 0000 0011
	unsigned char num2 = 24;	// 0001 1000

	printf("%u\n", num1 << 3);	// 0001 1000 = 24
	printf("%u\n", num2 >> 2);	// 0000 0110 = 6

	return 0;
}

23.4 비트 연산 후 할당하기

#include <stdio.h>

int main(void)
{
	unsigned char num1 = 4;	// 0000 0100
	unsigned char num2 = 4;
	unsigned char num3 = 4;
	unsigned char num4 = 4;
	unsigned char num5 = 4;

	num1 &= 5;	// 0000 0100 = 4
	num2 |= 2;	// 0000 0110 = 6
	num3 ^= 3;	// 0000 0111 = 7
	num4 <<= 2;	// 0001 0000 = 16
	num5 >>= 2;	// 0000 0001 = 1

	printf("%u\n", num1);
	printf("%u\n", num2);
	printf("%u\n", num3);
	printf("%u\n", num4);
	printf("%u\n", num5);

	return 0;
}
  • 비트 연산에서 연산과 할당이 한꺼번에 이루어지는 연산자는 플래그를 켜거나 끌 때 유용하게 활용된다.