求一个数二进制中的1的个数

问题描述:
写一个函数能够实现云输入一个整数,输出该数的二进制表示中1的个数。
解题分析:
方法一:
可以先把n与1做按位与运算,判断最低为是不是1。把1向左移动1位变成2,在与n那位与运算,这样就可以判断n的次低位是不是1,循环往复知道到n最高位判断完,1变成0,同时最为循环停止的条件。
代码如下:

import java.util.Scanner;
public class _求二进制中1的个数 {
	public static void main(String[] args){
		Scanner sc= new Scanner(System.in);
		int N = sc.nextInt();
		System.out.println(Integer.toString(N, radix(2)));
		int count=0;
		for(int i=0; i<32; i++){
			if((N&(1<<i))==(1<<i)){
				count++;
}
				
		}
		System.out.println(count);
	}

	private static int radix(int i) {
		// TODO Auto-generated method stub
		return 0;
	}

}
方法二:
把一个整数减去1,在于原数字做按位与运算,会把原数二级制位中最右边的1变成0.那么一个整数二进制表示中有几个1,就可以进行几次这样的操作。

0111减去1变成0110,二者进行与运算变成0110,则把原数做右边的1变成0.循环往复直到全为0结束。
代码如下:

import java.util.Scanner;
public class _求二进制中1的个数 {
	public static void main(String[] args){
		Scanner sc= new Scanner(System.in);
		int N = sc.nextInt();
		System.out.println(Integer.toString(N, radix(2)));
		int count=0;
while(N!=0){
			N =((N-1) & N);
			count++;
		}
				
		
		System.out.println(count);
	}

	private static int radix(int i) {
		// TODO Auto-generated method stub
		return 0;
	}

}

答案:这个题的答案是根据程序员输入的数而决定的,所以这个题没有确定的答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值