Java 計算二進位制的前導零個數
阿新 • • 發佈:2021-01-21
技術標籤:java
題目內容
計算機內部用二進位制來表達所有的值。一個十進位制的數字,比如18,在一個32位的計算機內部被表達為00000000000000000000000000011000。可以看到,從左邊數過來,在第一個1之前,有27個0。我們把這些0稱作前導的零。
現在,你的任務是寫一個程式,輸入一個整數,輸出在32位二進位制表達下它前導的零的個數。
輸入格式:
一個整數,在32位的整數可以表達的範圍內。
輸出格式:
一個整數,表達輸入被表達為一個32位的二進位制數時,在第一個1之前的0的數量。
輸入樣例:
256
輸出樣例:
23
程式碼
import java.util.Scanner;
public class Main {
//將輸入的數轉為二進位制
public static int[] change(int decNum , int digit){
int count = 0;
int[] num = new int[32];
for(int i= digit-1;i>=0;i--) {
num[count] = (decNum>>i)&1;
count++;
}
for(int i=0;i<digit;i++){
System.out.print(num[ i]);
}
return num;
}
//計算二進位制前導零的個數
public static void func(int test,int num){
int count = 0;
int[] digit = change(test, num);
System.out.print("\n");
for(int i = 0;i<num;i++){
if(digit[i] == 1){
break;
}
count++;
//System.out.print(+count+" ");
}
System.out.print("\n"+test+"的二進位制前導的零個數為:"+count);
}
public static void main(String[] args){
int num = 32;
Scanner in = new Scanner(System.in);
System.out.print("請輸入一個整數:");
int test = in.nextInt();
func(test, num);
}
}