題目來源 - leetcode
Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
解題
int findComplement(int num) {
int temp = num, mask = 1;
while(temp){
temp >>= 1;
mask <<= 1;
}
return ((mask - 1) ^ num);
}
分析
首先是創(chuàng)建一個(gè)等長(zhǎng)的數(shù),然后由“1”組成,之后和原數(shù)進(jìn)行“^”操作,得出的結(jié)果,就是我們所需要的。
如何打印 bit 格式 參考自 - stackoverflow
//assumes little endian
void printBits(size_t const size, void const * const ptr)
{
unsigned char *b = (unsigned char*) ptr;
unsigned char byte;
int i, j;
for (i=size-1;i>=0;i--)
{
for (j=7;j>=0;j--)
{
byte = (b[i] >> j) & 1;
printf("%u", byte);
}
}
puts("");
}
以上。