Java実装-バイナリの先頭のゼロ(10点)(慕課)

4569 ワード

/*バイナリの先頭にあるゼロ(10分)のタイトル内容:コンピュータの内部ではすべての値をバイナリで表します.1つの10進数、例えば18は、32ビットのコンピュータの内部では億億億億億億億億億円011000と表現されています.左側から数えてみると、1番目の1より前に27個の0があります.これらの0を先頭のゼロと呼びます.
今、あなたの任務はプログラムを書いて、整数を入力して、32ビットのバイナリ表現の下でその先頭のゼロの個数を出力します.
入力フォーマット:32ビットの整数で表現できる整数.
出力フォーマット:入力が32ビットのバイナリ数として表現されたときの、最初の1より前の0の数を表す整数.
入力サンプル:256
出力サンプル:23*/解題構想:
負の整数であれば、負数に対応するバイナリ数は1を先頭とするので、直接出力プリアンブル0の個数が0であれば非負の整数であれば、その数に対応するバイナリ数の桁数を求め、32でこの桁数を減算して出力すればよい
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner inputScanner = new Scanner(System.in);
		int n = inputScanner.nextInt();
		int i, j;
		
		//    
		if (n >= 0) {
			System.out.print(32 - binaryNumberCount(n));//  32   (            )      0   
		}else {
			System.out.print(0);
		}
	}

	//    ,              
	private static int binaryNumberCount(int n) {
		int count = 0;
		while (n != 0) {
			n /= 2;
			count++;
		}

		return count;
	}
}


もし問題があれば伝言を残して交流することができて、私はきっとタイムリーに返事します;もし採用したら、「いいね」を覚えていてください.私は「いいね」を集めています.