カコモンノート

問16基本情報技術者 サンプル問題(科目B)

16 / 20問
サンプル問題(科目B)

次のプログラム中の に入れる正しい答えを,解答群の中から選べ。二つの には,同じ答えが入る。ここで,配列の要素番号は 1 から始まる。Unicode の符号位置を,UTF-8 の符号に変換するプログラムである。本問で数値の後ろに“(16)”と記載した場合は,その数値が 16 進数であることを表す。Unicode の各文字には,符号位置と呼ばれる整数値が与えられている。UTF-8 は,Unicode の文字を符号化する方式の一つであり,符号位置が 800(16) 以上 FFFF(16)以下の文字は,次のように 3 バイトの値に符号化する。3 バイトの長さのビットパターンを 1110xxxx 10xxxxxx 10xxxxxx とする。ビットパターンの下線の付いた“x”の箇所に,符号位置を 2 進数で表した値を右詰めで格納し,余った“x”の箇所に,0 を格納する。この 3 バイトの値が UTF-8 の符号である。例えば,ひらがなの“あ”の符号位置である 3042(16) を 2 進数で表すと11000001000010 である。これを,上に示したビットパターンの“x”の箇所に右詰めで格納すると,1110xx11 10000001 10000010 となる。余った二つの“x”の箇所に 0を格納すると,“あ”の UTF-8 の符号 11100011 10000001 10000010 が得られる。関数 encode は,引数で渡された Unicode の符号位置を UTF-8 の符号に変換し,先頭から順に 1 バイトずつ要素に格納した整数型の配列を返す。encode には,引数として,800(16) 以上 FFFF(16) 以下の整数値だけが渡されるものとする。

この問題の図
問題に添えられた図。出典は下に書いています。

選択肢をえらぶと、答えと解説が出ます

選択肢をえらぶと、
ここに答えと解説が出ます
正答 8

解説

決まった長さのビットの並びに、符号位置の桁を後ろから詰めていく手続になる。後ろ側のバイトはそれぞれ決まった桁数だけを受け持ち、残りの桁は先頭に置く目印で埋まる。ある桁数の分だけを取り出すには、その桁数で表せる場合の数で割った余りを使い、次へ進むときは同じ数で割った商に置き換える。割る数は受け持つ桁数から決まる。

KEY POINT
UTF-8 は、バイトが受け持つ桁数で表せる場合の数ごとに符号位置を切り出す

「科目B」の他の問題

「科目B」42問をまとめて見る →

出典:基本情報技術者試験(科目B試験) サンプル問題セット(独立行政法人 情報処理推進機構(IPA))
独立行政法人情報処理推進機構(IPA)が公表している過去問題です。IPA の「過去問題の使用について」に基づき、IPA が指定する形で出典を明記して掲載しています(利用の許諾申請は不要)。問題文・選択肢の内容は変えていません。本文は IPA が公表した問題冊子の頁を人が読んで起こし、別の読み手が原本と突き合わせています。その都合で、改行・字間の空白は省き、英数字の全角・半角は元とそろえていない箇所があります。図表は IPA が公表した問題冊子のものです。解説は当サイトが独自に作成したもので、IPA とは関係ありません。