新らしくなった基本情報 科目 B 20問バージョン アルゴリズムとプログラミング サンプル問題6をJavaにしてみました
2023 年 4 月からIPA (独立行政法人情報処理推進機構)の基本情報技術者試験の制度が変更されました。
ここでは、「基本情報技術者試験 科目 B のサンプル問題20問バージョン」の中から、アルゴリズムとプログラミングの問題を取り上げ、Javaのソースコードを示します。
新人エンジニア研修に参加されている皆様の参考になれば幸いです。

【Javaプログラム】
public class Q6 {
//本問で問われている関数
static byte rev(byte byte1) {
byte rbyte = byte1;
byte r = 0b00000000; //0b は、直後に続く数値が2進数(binary)であることを示す。以下同じ。
for (int i = 1; i <= 8; i++) {
r = (byte) ((r << 1) | (rbyte & 0b0000001)); // |はビットごとの OR 演算子。
rbyte = (byte) (rbyte >> 1);
}
return r;
}
public static void main(String[] args) {
byte num1 = rev((byte) 0b01001011);
// Integer.toBinaryStringメソッドは出力結果をビット列で表示するため。
// 0xFFでマスクしているのは下位8ビットだけを取り出すため
System.out.println(Integer.toBinaryString(num1 & 0xFF)); // &はビットごとの AND 演算子。
}
}
【結果】
11010010 |
【プログラムの解説】
このプログラムは、8ビットのバイナリ数(ビット列)を逆順にするプログラムです。具体的には、入力されたバイト型の値をビットごとに反転させた新しいバイト型の値を出力します。
プログラムは以下のように構成されています。
mainメソッド: プログラムのエントリーポイントです。ここからプログラムが実行されます。
revメソッド: 引数で受け取ったバイト型の値をビットごとに反転させるメソッドです。
mainメソッドの中で、入力としてバイト型の値0b01001011が用意されています。
次に、この値をrevメソッドに渡して、ビットが反転された値を得ます。
そして、結果をビット列として表示するために、Integer.toBinaryStringメソッドを使用します。
さらに、& 0xFFを使って下位8ビットだけを取り出し、結果をコンソールに出力します。
revメソッドは、入力されたバイト型の値をビットごとに反転させる処理を行います。
これは、最初に反転後の値を格納するための変数rを用意し、入力されたバイト型の値byte1を1ビットずつ左にシフトしながら、それぞれのビットをrに格納していくことで実現されています。
この処理は8回繰り返されます(8ビット分)。最後に、反転されたバイト型の値rが返されます。
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
新入社員2025年2月23日【新人エンジニア必読】「入りを量りて出を制す」の考え方を仕事に活かす
新人エンジニア研修講師2025年2月23日丁寧なのにイラッとする言葉
新入社員2025年2月23日【初心者の方も安心】Gitで避けたい主なトラブル10選
新入社員2025年2月23日【新人エンジニア向け】損失回避バイアスを知って開発リスクを減らそう