说一说,求一个正整数的二进制中0的个数

Posted 晶莹的营

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说一说,求一个正整数的二进制中0的个数相关的知识,希望对你有一定的参考价值。

昨天突然看到一个算法题:一个正整数a的二进制中0的个数;

话说这是个老题了,直观的算法就每次右移一位,直到0为止;代码就省略了;

仔细想想有更好的方案么?

就是这个题可以转换成一个正整数~a的二进制中1的个数; 求1的个数这个貌似就很熟悉了吧;

int num = 0;

b = ~a;

while(b){

    num++;

  b = b & (b-1);

}

是不是容易了许多呢

另外像java和python这种没有unsigned的语言要自己去转

b = ~a & 0x0ffff

以上是关于说一说,求一个正整数的二进制中0的个数的主要内容,如果未能解决你的问题,请参考以下文章

C语言中啥是一个8位的整数

求一个整数储存在内存中的二进制1的个数

剑指offer-11-二进制中1的个数

2022-02-21:不含连续1的非负整数。 给定一个正整数 n ,返回范围在 [0, n] 都非负整数中,其二进制表示不包含 连续的 1 的个数。 输入: n = 5 输出: 5 解释: 下面是带

编写代码,求一个整数在内存中的二进制中1的个数

java程序在控制台输入一个正整数,要求以二进制的形式输出