1. 程式人生 > 其它 >Java 計算二進位制的前導零個數

Java 計算二進位制的前導零個數

技術標籤: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); } }

在這裡插入圖片描述
在這裡插入圖片描述