當前位置:網站首頁>1.4一題三解:二進制中1的個數

1.4一題三解:二進制中1的個數

2022-01-27 00:43:11 邀風醉明月

在這裏插入圖片描述
題解1:
在這裏插入圖片描述
int的數值是三十二比特,則用x&1來參與計數,每次循環1向左移一比特
&的功能:按比特與 如果兩個相應的二進制比特都為1,則該比特的結果值為1,否則為0

import java.util.Scanner;

public class 一題三解二進制中1的個數 {
    //這裏的名字必須跟你自己定義的名字一樣

	public static void main(String[] args) {
    
		// TODO Auto-generated method stub
		Scanner sc =new Scanner(System.in);
		int N=sc.nextInt();
		//Integer.toString(int par1,int par2),par1錶示要轉成字符串的數字,par2錶示要轉成的進制錶示
		System.out.println(Integer.toString(N, 2));
		int count =0;
		for(int i=0;i<32;i++)
		{
    
			if((N&(1<<i))==(1<<i)) {
    //計算時,N是以二進制來參與運算的
				count++;
			}
		}
		System.out.println(count);
	}

}

題解二:
在這裏插入圖片描述

x&1中,每次循環x向右移一比特,1不移動

思路3:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

計算N=((N-1)&N),知道N等於0,設置一個計數器count

import java.util.Scanner;

public class 一題三解二進制中1的個數 {
    

	public static void main(String[] args) {
    
		// TODO Auto-generated method stub
		Scanner sc =new Scanner(System.in);
		int N=sc.nextInt();
		//Integer.toString(int par1,int par2),par1錶示要轉成字符串的數字,par2錶示要轉成的進制錶示
		System.out.println(Integer.toString(N, 2));
		int count =0;
		for(int i=0;i<32;i++)
		{
    
			if((N&(1<<i))==(1<<i)) {
    //計算時,N是以二進制來參與運算的
				count++;
			}
		}
		System.out.println(count);
		
		count =0;
		for(int i=0;i<32;i++)
		{
    
			if(((N>>>i)&1)==1)
				count++;
		}
		System.out.println(count);
		
		count =0;
		while(N!=0)
		{
    
			N=((N-1)&N);
			count++;
		}
		System.out.println(count);
	}

}

版權聲明
本文為[邀風醉明月]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201270043105457.html

隨機推薦