11:二进制中1的个数

11:二进制中1的个数负数用 32 位的补码表示 正数 原码 反码 补码 负数 反码 原码符号位不变 其余位取反 补码 反码加 1 输入一个整数 输出该数 32 位二进制表示中 1 的个数 其中负数用补码表示 示例 1 输入 复制 10 返回值

大家好,我是讯享网,很高兴认识大家。

 

负数用32位的补码表示

正数:原码==反码==补码

负数:反码:原码符号位不变,其余位取反;补码:反码加1

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

示例1


讯享网

输入

复制

10

讯享网

返回值

复制

讯享网2

第一种流氓解法

借助Integer.toBinaryString(n)转换为二进制字符串

 public int NumberOf1(int n) { //负数用补码表示 // 1、首先求出负数的原码,如-8的原码为 1000 1000, // 2、通过原码求出它的反码,负数的反码就是 除符号为以外,其余的全部求反,如-8 反码为 1111 0111, // 3、负数的补码 +1,就是它的补码,如 -8 的补码为 1111 1000 // // 总结 一句话就是 负数的补码是在原码的基础上除符号位外其余位取反后+1 String s=Integer.toBinaryString(n); int num=0; for(int i=0;i<s.length();i++){ if(s.substring(i,i+1).equalsIgnoreCase("1")){ num+=1; } } return num; }

 

 

小讯
上一篇 2025-02-11 21:21
下一篇 2025-01-07 15:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/74823.html