はじめに
Java では、NumberOfTrailingZeros() メソッドは、引数として渡された整数値の 2 の補数の最下位 1 ビット(最右)の直後のゼロ ビットの数を返します。言い換えると、このメソッドは整数値を 2 進数に変換し、最下位(最右)の 1 ビットの直後のゼロ ビットの合計数を返します。この実験では、Java で NumberOfTrailingZeros() メソッドを使用する手順を案内します。
Java クラスを作成する
次のコマンドを使用して、~/project ディレクトリに NumberOfTrailingZerosDemo という名前の Java クラスを作成します。
vi ~/project/NumberOfTrailingZerosDemo.java
NumberOfTrailingZeros() メソッド用のコードを追加する
このステップでは、クラス内で NumberOfTrailingZeros() Java メソッドを使用するコードを追加します。
public class NumberOfTrailingZerosDemo {
public static void main(String[] args) {
int i = 170; // 正数
System.out.println("元の数は " + i);
System.out.println("2 進数表記は = " + Integer.toBinaryString(i));
System.out.println("末尾のゼロの数は " + Integer.numberOfTrailingZeros(i));
int j = -57; // 負数
System.out.println("元の数は " + j);
System.out.println("2 進数表記は = " + Integer.toBinaryString(j));
System.out.println("末尾のゼロの数は " + Integer.numberOfTrailingZeros(j));
}
}
このコードは、元の数、その 2 進数表記、および最下位 1 ビットの直後の末尾のゼロの数を表示します。
Java クラスをコンパイルして実行する
クラスをコンパイルするには、ターミナルで次のコマンドを実行します。
javac NumberOfTrailingZerosDemo.java
コンパイル済みのクラスを実行するには、次のコマンドを使用します。
java NumberOfTrailingZerosDemo
プログラムの出力は次のようになります。
元の数は 170
2 進数表記は = 10101010
末尾のゼロの数は 1
元の数は -57
2 進数表記は = 11111111111111111111111111000111
末尾のゼロの数は 0
ユーザ入力の例
ここでは、ユーザが数値を入力し、その数値の末尾のゼロの数を表示する例を示します。
main() 関数に以下のコードを追加します。
try {
System.out.println("数値を入力してください ");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println("2 進数表記は = " + Integer.toBinaryString(i));
System.out.println("末尾のゼロの数は " + Integer.numberOfTrailingZeros(i));
} catch (Exception e) {
System.out.println("入力が不正です");
}
修正された Java クラスをコンパイルして実行する
クラスをコンパイルするには、ターミナルで次のコマンドを実行します。
javac NumberOfTrailingZerosDemo.java
コンパイル済みのクラスを実行するには、次のコマンドを使用します。
java NumberOfTrailingZerosDemo
プログラムの出力は以下のようになります。
数値を入力してください
87
2 進数表記は = 1010111
末尾のゼロの数は 0
ライブサンプルをテストする
これで NumberOfTrailingZeros() メソッドの動作方法を知ったので、同様の出力が得られるかどうかを確認するためにライブサンプルをテストできます。
import java.lang.*;
public class NumberOfTrailingZerosDemo {
public static void main(String[] args) {
int i = 500; // 末尾に 2 つのゼロ
System.out.println("数はこのようになります : " + i);
System.out.println("2 進数表記は = " + Integer.toBinaryString(i));
System.out.println("末尾のゼロの数は " + Integer.numberOfTrailingZeros(i));
int j = 456; // 末尾に 2 つのゼロ
System.out.println("数はこのようになります : " + j);
System.out.println("2 進数表記は = " + Integer.toBinaryString(j));
System.out.println("末尾のゼロの数は " + Integer.numberOfTrailingZeros(j));
int k = -8; // 先頭に 3 つのゼロ
System.out.println("数はこのようになります : " + k);
System.out.println("2 進数表記は = " + Integer.toBinaryString(k));
System.out.println("最下位 1 ビットの直後のゼロの数は " + Integer.numberOfTrailingZeros(k));
}
}
上記のコードをターミナルで実行して出力を取得します。
javac NumberOfTrailingZerosDemo.java
java NumberOfTrailingZerosDemo
これにより、以下の出力が生成されます。
数はこのようになります : 500
2 進数表記は = 111110100
末尾のゼロの数は 2
数はこのようになります : 456
2 進数表記は = 111001000
末尾のゼロの数は 2
数はこのようになります : -8
2 進数表記は = 11111111111111111111111111111000
最下位 1 ビットの直後のゼロの数は 3
コードを GitHub に保存する
これで、NumberOfTrailingZeros() メソッドのコードを正常に書き、~/project/NumberOfTrailingZerosDemo.java ディレクトリに保存し、コードを正常に実行したので、将来の参照のために GitHub に保存することが重要です。コードを GitHub リポジトリにプッシュするには、次の手順を使用します。
- ローカルディレクトリを Git リポジトリとして初期化します。
git init
- 新しいローカルリポジトリにファイルを追加します。これは、最初のコミットのためにそれらをステージングします。
git add.
- ローカルリポジトリにステージングしたファイルをコミットします。
git commit -m '最初のコミット'
- コマンドプロンプトで、ローカルリポジトリがプッシュされるリモートリポジトリの URL を追加します。
git remote add origin <REMOTE_URL>
## 例
## git remote add origin https://github.com/user/repo.git
- ローカルリポジトリの変更を GitHub にプッシュします。
git push origin master
GitHub 上のコードを更新する
GitHub 上のコードを更新するには、以下の手順に従ってください。
- 新しい変更をローカルリポジトリに追加します。
git add.
- ローカルリポジトリにステージングしたファイルをコミットします。
git commit -m 'コミットメッセージ'
- ローカルリポジトリの変更を GitHub にプッシュします。
git push origin branch-name
GitHub からコードを取得する
GitHub リポジトリにコミットしたコードを取得するには、次のコマンドを使用します。
git clone <git-repo-url>
ローカル環境をクリーンアップする
演習を完了した後は、作成およびコンパイルした.java ファイルを削除することで環境をクリーンアップする必要があります。
rm ~/project/NumberOfTrailingZerosDemo.java
rm ~/project/NumberOfTrailingZerosDemo.class
まとめ
この実験では、Java で NumberOfTrailingZeros() メソッドをどのように使用するかを学びました。また、さまざまな入力数の例と、異なる入力によって出力がどのように変化するかも説明しました。また、GitHub にコードを保存する方法についても説明しました。



