int v;
bool f; // v가 2의 n승이면 true, 아니면 false;
// 음수는 안됨
f = (v & (v - 1)) == 0; // 0도 포함됨
// 0을 제외하고 싶다면
f = v && !(v & (v - 1));
'C/C++ > 비트/쉬프트' 카테고리의 다른 글
분기 없이 정수의 절대값 구하기 (0) | 2012.09.02 |
---|---|
두 정수의 부호가 다름을 판별 (0) | 2012.09.02 |
Integer의 부호 판별 (0) | 2012.09.02 |
비트수가 같은 다음 수(Next Higher or Lower Number with same number of binary bits set) (0) | 2012.06.05 |
추가 메모리 없이 두 정수 교환하기(Integer Swap) (0) | 2012.06.01 |