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 |
댓글