【算法学习】C - Number Complement

题目来源 - 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);
}

分析

首先是创建一个等长的数,然后由“1”组成,之后和原数进行“^”操作,得出的结果,就是我们所需要的。

如何打印 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("");
}

以上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,767评论 0 33
  • Android View 虽然不是四大组件,但其并不比四大组件的地位低。而View的核心知识点事件分发机制则是不少...
    Flyzend阅读 52,287评论 39 323
  • 更多更多的练习 输入: -运行: 这段眼花缭乱的代码,试了好几次才完全输入正确并运行成功。。。
    Joemini阅读 653评论 0 0
  • 回到家,爸妈已经睡觉了。安静的空间里,我突然想写点东西,天哪。即便我经常性的催促自己要好好把写字这件事坚持下来,也...
    言小胡阅读 300评论 0 0
  • 从今天起,做个幸福的人 洗衣,扫地,做饭,品味生活 从今天起,关心柴米与油盐 我只有一所房子,面朝家庭,春暖花开 ...
    甲老师阅读 1,503评论 1 13