[C++] bitmasking

leeact·2023년 5월 5일
3

c++ 정리

목록 보기
7/13
post-thumbnail

✍ bitmasking

byte = 8bit
1bit = 0 or 1(2진수 1자리)


"&&" : and
"||" : or


"&" : and(bit 단위)
-> 특정 비트를 추출할 때, 0으로 만들 때


"|" : or(bit 단위)
-> 특정 비트를 1로 만들 때


"^" : xor(두 수에서 다른 bit는 1 같은 bit는 0)
-> 1인 부분은 반대, 0인 부분은 원본(반전)


"<<" : a<<b a를 b만큼 bit를 옮겨준다
">>" : a>>b a를 b만큼 bit를 옮겨준다
밀어버릴 때 주의할점

  • 범위를 벗어나면 사라진다.
  • "<<" 은 2배, ">>" 은 1/2배
  • 2 2 2 2 2 = << 5

📒 Example

5(101) & 3(011) = 001(1)
10(1010) | 12(1100) = 1110(14)
10(1010) ^ 12(1100) = 0110(6)
a ^ b ^ c ^ b ^ c = a
같은 것끼리는 사라진다(교환법칙O)

특정 자리에 bit가 몇번 존재하는지 확인하는 예제
int test = 351840;
	int temp = test;
	int cnt = 0;
	while (temp) {
		if (temp & 1) { // 1의 자리에 bit가 존재하냐?
			// (temp & 0b11) == 0b11 // 11이 연속한게 존재하냐?
			cnt++;
		}
		temp >> 1;	// 오른쪽으로 이동
	}

	return 0;

6개의 댓글

comment-user-thumbnail
2023년 5월 10일

헉~~ 대단하세요!!

1개의 답글
comment-user-thumbnail
2023년 5월 10일

에미넴씨 C++ 공부하고 계시군요! 대단해요~

1개의 답글
comment-user-thumbnail
2023년 5월 10일

이거 힙합이네요

1개의 답글