int v;
unsigned int r; // v의 절대값
const int mask = v >> (sizeof(int) * CHAR_BIT - 1);
// CHAR_BIT 는 char의 비트수
r = (v + mask) ^ mask;
// or
r = (v ^ mask) - mask;
'C/C++ > 비트/쉬프트' 카테고리의 다른 글
정수값이 2의 지수승인지 판별 (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 |