본문 바로가기
Computer Science/Problem Solving(Algorithm)

Bit 연산

by 진뚱 2021. 11. 22.
728x90
// a가 홀수인지 확인 방법
if (a&1);

//a가 짝수인지 확인 방법
if(~a&1);

// a*2^k 
a << k;

// a를 2^k 로 나눈 몫 p 와 나머지 r을 구하는 방법
p = a >> k;
r = a & ((1 << k) - 1)

// swap (a,b)
a = a^b, b= a^b, a = a^b
a^=b^=a^=b;

// a의 k번째 bit가 0인지 1인지 확인
result = (a >> k) & 1;

// a의 k번째 bit만 0으로 변경
a = a & (~(1 << k));

//a의 k번째 bit만 0이면 1로 1이면 0으로 바꾸기
a = a ^ (1 << k);

// a가 2의 제곱수인지 확인
result = a & (a - 1); // 0은 예외처리 필요

// a와 b 비교하여 서로 다른 비트가 있는지 확인
bit = a^b;
result = bit & (bit - 1);

// LSB 찾기 (Least Significant 1 bit) - 0번째 bit부터 시작하여 처음 만나는 1인 비트
lsb = a & -a;

bit 연산을 이용하면 조금 더 간편하게 이용할 수 있다.

 

 

728x90

'Computer Science > Problem Solving(Algorithm)' 카테고리의 다른 글

[STL] Unordered_Map  (0) 2021.11.29
BOJ 10872 - 팩토리얼  (0) 2021.06.18
<BOJ> 팩토리얼 (10872)  (0) 2021.03.31
< BOJ > 9934 - 완전 이진 트리  (0) 2019.06.06
< BOJ > 2571 - 색종이-3  (0) 2019.06.04

댓글