题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解法1思路解析:
step 1:num的二进制的最右边位与1相与,如果不为0,则count加1;
step 2:否则,对1左移一位,继续与num的二进制的最右边数的第二位进行相与;
step 3:依次循环,即可完成。
解法1代码实现:
import java.util.Scanner;
public class Exercise18 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int num = sc.nextInt();
int count = NumberOf1(num);
System.out.println(count);
}
}
private static int NumberOf1(int num) {
//判断num是否为0
if(num == 0){
return 0;
}
//记录1的出现次数
int count = 0;

这篇博客介绍了三种不同的Java方法来计算一个整数在二进制表示中1的个数。解法包括通过位操作逐位计数,无符号右移以及减1相与法,并分析了各自的优缺点,如循环次数、是否改变原数值以及可能的死循环问题。
最低0.47元/天 解锁文章
1217

被折叠的 条评论
为什么被折叠?



