資格部

資格・検定の試験情報、対策方法、問題解説などをご紹介

FE 科目B サンプル問題 問16

 

 次のプログラム中の   に入れる正しい答えを,解答群の中から選べ。二つの には,同じ答えが入る。ここで,配列の要素番号は 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) 以下の整数値だけが渡されるものとする。

〔プログラム〕

○整数型の配列: encode(整数型: codePoint)

 /* utf8Bytesの初期値は,ビットパターンの“x”を全て0に置き換え,

  8桁ごとに区切って,それぞれを2進数とみなしたときの値 */

 整数型の配列: utf8Bytes ← {224, 128, 128}

 整数型: cp ← codePoint

 整数型: i

 for (i を utf8Bytesの要素数 から 1 まで 1 ずつ減らす)

  utf8Bytes[i] ← utf8Bytes[i] + (cp ÷     の余り)

  cp ← cp ÷     の商

 endfor

 return utf8Bytes

 

解答群

  1. ((4-i)×2)
  2. (2の(4-i)乗)
  3. (2のi乗)
  4. (i × 2)
  5. 2
  6. 6
  7. 6li>
  8. 64
  9. 256

解答・解説

解答

 ク

解説

 作成中

前問 一覧 次問