美文网首页《简单记记——小小程序题》
《简单记记》输入一个整数,输出该数二进制表示中1的个数。其中负数

《简单记记》输入一个整数,输出该数二进制表示中1的个数。其中负数

作者: 空城空忆亦空心 | 来源:发表于2018-08-02 19:29 被阅读0次

方式一:假设整数为n,每次n与n-1做与运算,然后结果依次做与运算,这样每次都能去掉最右边的1,每做一次,count加依次,直到n=0
public int NumberOf1(int n) {
int count = 0;
while(n!=0){
count ++;
n = n & (n-1);
}
return count;
}


方式二:整数n每次与1做与运算,如果结果为1,则说明最后一位是1,然后让n右移一位继续与1做与运算,因为负数右移,高位补1,所以控制循环32次,因为一个int型整数4个字节共32位
public int NumberOf1(int n) {
int count = 0;
for (int i = 0; i < 32; i++) {
if ((n&1)==1){
count ++;
}
n >>= 1;
}
return count;
}


方式三:类似方式二,只不过是每次让1左移
public int NumberOf13(int n) {
int count = 0;
int num = 1;
while (num!=0){
if ((n&num)!=0)
count ++ ;
num <<= 1;
}
return count;
}


方式四:这个没什么好说的,就是把整数转化为二进制字符串,然后把字符串中的0替换为"",然后返回字符串的长度就可以
public int NumberOf1(int n) {
return Integer.toBinaryString(n).replaceAll("0", "").length();
}

相关文章

  • 二进制中1的个数

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

  • 二进制中1的个数

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

  • 【前端】剑指offer题解每日一更

    题目 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解法

  • 二进制中1的个数

    题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

  • 二进制中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

  • 11-二进制中1的个数-补码-toString()的巧用

    题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 代码

  • 剑指offer刷题记录(C++版本)(之二)

    11.二进制中1的个数 题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:如果一个整数...

  • 一、位运算

    题目 1、求一个整数,二进制时1的个数 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:最...

  • <<剑指offer>>--javascript(9)-二进制数中

    二进制数中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 代码如下: 基本思...

  • 剑指offer.C++.code11-15

    11. 二进制中1的个数 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 12. 数值的整数次方...

网友评论

    本文标题:《简单记记》输入一个整数,输出该数二进制表示中1的个数。其中负数

    本文链接:https://www.haomeiwen.com/subject/tvbsvftx.html