2進数を10進数に変換する処理【基本情報技術者試験 科目B 公開問題】

令和6年度 基本情報技術者試験 公開問題 科目B 問2のブログのアイキャッチ画像 科目B 公開問題
広告

← 科目Bの公開問題一覧へ戻る

 基本情報技術者試験の科目Bの公開問題を題材に,2進数を10進数に変換する処理について学習します。この問題では,2進数を左から順番に読み取り,計算によって10進数に変換する方法を確認します。

広告

令和6年度 基本情報技術者試験 公開問題 科目B 問2

 次のプログラム中の       に入れる正しい答えを,解答群の中から選べ。

 関数 convDecimal は,引数として与えられた,“0” と “1” だけから成る,1文字以上の文字列を,符号なしの2進数と解釈したときの整数値を返す。例えば,引数として “10010” を与えると18が返る。

 関数 convDecimal が利用する関数 int は,引数で与えられた文字が “0” なら整数値0を返し,“1” なら整数値1を返す。

〔プログラム〕

○整数型: convDecimal(文字列型: binary)

 整数型: i,length,result ← 0

 length ← binaryの文字数

 for (i を 1 から length まで 1 ずつ増やす)

  result ←      

 endfor

 return result

解答群

ア result + int(binary の (length - i + 1)文字目の文字)

イ result + int(binary の i文字目の文字)

ウ result × 2 + int(binary の (length - i + 1)文字目の文字)

エ result × 2 + int(binary の i文字目の文字)

【解答】

【解説】

関数 convDecimal は,引数として与えられた2進数を表す文字列を,10進数の整数値に変換する関数である。左から1文字ずつ読み取り,現在の値を2倍して,読み取ったビット(0または1)を加えることで変換を行う。2進数では,桁が1つ左に進むと位の重みが2倍になる。そのため,左から順番に処理するときは,これまでの値を2倍してから,次のビットの値(0または1)を加える。

例えば 10010 は,次のように計算される。

0 ⇒ 0×2+1=1 ⇒ 1×2+0=2 ⇒ 2×2+0=4 ⇒ 4×2+1=9 ⇒ 9×2+0=18

したがって,最終的に18が返される。

「令和6年度 基本情報技術者試験 公開問題 科目B 問2」の解答_画像

この問題のポイント

 この問題から学べることは,

  • 2進数を10進数に変換する方法
  • 2進数を左から順番に処理する方法
  • 現在の値を2倍して,次のビットを加える計算
  • ループ処理によって,文字列の各文字を順番に処理する方法

です。特に,2進数を左から順番に処理するときに,「現在の値を2倍して,次のビットの値を加える」という計算方法を理解しておきましょう。

基本情報技術者試験の学習におすすめの参考書

基本情報技術者試験の合格を目指す方におすすめの参考書です。

令和08年 イメージ&クレバー方式でよくわかる かやのき先生の基本情報技術者教室
基礎理論からコンピュータ・ネットワーク・データベースまで、基本情報技術者試験の全範囲をわかりやすく学べる定番テキストです。図解が豊富で、初学者にもおすすめです。

キタミ式イラストIT塾 基本情報技術者 令和08年
イラストを使った解説が特徴の人気参考書です。基礎理論の考え方や計算問題もイメージで理解しやすく、独学学習との相性が良い一冊です。

令和08年 基本情報技術者 合格教本
試験範囲を体系的に学習したい方におすすめの教科書です。基礎理論の各テーマも丁寧に解説されており、理解を深めながら学習を進められます。

学習のお役に立ちましたら

この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。

よろしければ、このサイトを応援いただけますと嬉しいです。

※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。

広告