Javaで整数の実際のビットを反転する方法を解説
負でない整数 n が与えられます。この記事の目標は、n のビットを反転し、その結果得られる数値を出力することです。ビットを反転する際には、整数の実際の2進表現がそのまま使われ、先頭の0(リーディングゼロ)は考慮されません。
入出力の具体例
入力: 13
出力: 与えられた数の実際のビットを反転した結果は 11
(13)10 = (1101)2 ビットを反転すると: (1011)2 = (11)10
解説: 入力された数値から2進数のビット列を取得し、それを反転させた後、最後に10進数形式へ変換して結果として返しています。
入力: 18
出力: 与えられた数の実際のビットを反転した結果は 9
(18)10 = (10010)2 ビットを反転すると: (1001)2 = (9)10
解説: こちらも同様に、入力数値の2進表現を取得してビット列を反転し、10進数に戻した値が出力されています。
プログラムで使用するアプローチ
mainメソッド内での処理
数値を入力として受け取り、reverseBinaryBits(int input) メソッドに渡します。
reverseBinaryBits(int input) メソッド内での処理
反転後のビットを格納するための変数 rev_input を 0 で初期化します。
終了条件(input > 0)を持つループを繰り返します(右側のビットから順に走査していきます)。
ビット単位の右シフト演算を使用して n の2進表現からビットを1つずつ取り出し、ビット単位の左シフト演算によって rev に順番に蓄積していきます。
実装例
class TutorialsPoint{
public static int reverseBinaryBits(int input){
int rev_input = 0;
while (input > 0){
rev_input <<= 1;
if ((int) (input & 1) == 1){
rev_input ^= 1;
}
input >>= 1;
}
return rev_input;
}
public static void main(String[] args){
int input = 13;
System.out.println("Reverse actual bits of the given number");
System.out.println(reverseBinaryBits(input));
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
Reverse actual bits of the given number 11
-
JavaでJPasswordFieldの入力桁数を制限する方法(DocumentFilter活用)
JPasswordFieldとはJPasswordFieldはJTextFieldのサブクラスで、ユーザーが入力した各文字をエコー文字(通常は「*」)に置き換えて表示するSwingコンポーネントです。この仕組みにより、パスワードやPINコードといった機密情報を画面上に露出させることなく安全に入力できます。代表的なメソッドとしては、getPassword()、getText()、getAccessibleContext()などが挙げられます。デフォルトでは、JPasswordFieldには任意の文字数を入力できてしまいます。しかし実際のアプリケーション開発では、「PINコードは4桁まで」のように
-
Javaでカウンタープログラムを実装する方法をわかりやすく解説
この記事では、JavaのSwingを使ってシンプルなカウンター(数を数える)アプリケーションを実装する方法を解説します。このプログラムでは、JLabelでカウント用のラベルを表示し、JTextFieldで現在のカウント値を保持し、JButtonで「追加(Add)」「削除(Remove)」「リセット(Reset)」の3つのボタンを作成します。 「Add」ボタンをクリックするとJTextField内のカウントが1ずつ増加し、「Remove」ボタンをクリックすると1ずつ減少します。さらに「Reset」ボタンをクリックすると、カウントは0にリセットされます。 実装例 import java.awt.*