003 演算子(ビット演算子) 021 解答例

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // スキャナーを使ってユーザーから整数の入力を読み取る
        Scanner scanner = new Scanner(System.in);

        System.out.print("整数を入力してください: ");
        int number = scanner.nextInt(); // 整数の入力を読み取り

        // 整数の最も右端のビットを取得
        int rightmostBit = number & 1;

        // 判定結果を表示
        if (rightmostBit == 1) {
            System.out.println("最も右端のビットは1です。");
        } else {
            System.out.println("最も右端のビットは0です。");
        }
    }
}

このプログラムでは、ユーザーから整数の入力を受け取り、その整数の最も右端のビットを取得し、そのビットが1か0かを判定して結果を表示しています。

整数のビットを取得する

整数のビットを取得するには、与えられた整数の中から特定のビット(桁)を取り出す操作を指します。通常、整数は2進数で表現され、各ビットは0または1の値を持ちます。整数の特定のビットを取得することは、そのビットが1または0であるかを知るために役立ちます。

整数の特定のビットを取得する方法は、ビット演算を使用することです。主なビット演算子には次のものがあります:

ビット単位のAND演算(&): 2つの整数の対応するビットが両方とも1の場合に1を返し、それ以外の場合は0を返します。
ビット単位のOR演算(|): 2つの整数の対応するビットの少なくとも1つが1の場合に1を返し、両方とも0の場合は0を返します。
ビット単位のXOR演算(^): 2つの整数の対応するビットが異なる場合に1を返し、同じ場合は0を返します。
ビット単位の反転演算(~): 整数の各ビットを反転させます(0を1に、1を0に変換)。
具体的なビットを取得する手順は、次の通りです:

整数を特定のビットマスクとAND演算を行い、対応するビットを取得します。たとえば、最も右端(最低位)のビットを取得する場合、ビットマスクとして1を使用します。

ビット演算の結果は、取得したビットの値(1または0)を持つ新しい整数として取得されます。

以下は、Javaで整数の最も右端のビットを取得する例を示します:

int number = 10; // 例として整数10を使用
int rightmostBit = number & 1; // 最も右端のビットを取得
System.out.println("最も右端のビットは: " + rightmostBit);

この例では、整数10の2進数表現は「1010」であり、最も右端のビットは1です。したがって、rightmostBit には1が格納され、結果として「最も右端のビットは: 1」と表示されます。

10進数を2進数に変換する方法

10進数を2進数に変換する方法は、整数を2で割りながら剰余(余り)を記録し、逆順に並べていく方法です。以下は、10進数を2進数に変換する手順です:

  1. 変換したい10進数を選択します。例として、10進数の整数「75」を2進数に変換することを考えてみましょう。
  2. 整数を2で割り、商と余りを計算します。
    • 75 ÷ 2 = 37 余り 1
  3. 次に、計算された商を2で割り、再び商と余りを計算します。
    • 37 ÷ 2 = 18 余り 1
  4. 同様に繰り返します。
    • 18 ÷ 2 = 9 余り 0
    • 9 ÷ 2 = 4 余り 1
    • 4 ÷ 2 = 2 余り 0
    • 2 ÷ 2 = 1 余り 0
    • 1 ÷ 2 = 0 余り 1
  5. これを繰り返し、商が0になるまで計算します。このとき、計算した余りを逆順に並べると、10進数の75が2進数で「1001011」となります。

したがって、10進数75を2進数に変換すると「1001011」です。

この手法は、整数を2で割っていくことで、最も右端のビットから左端のビットまで順番に計算する方法です。このプロセスを反復的に行うことで、10進数を2進数に変換できます。

「003 演算子」問題集リスト