У нас вы можете посмотреть бесплатно 基本情報技術者試験 科目B サンプル問題 問16解説 или скачать в максимальном доступном качестве, видео которое было загружено на ютуб. Для загрузки выберите вариант из формы ниже:
Если кнопки скачивания не
загрузились
НАЖМИТЕ ЗДЕСЬ или обновите страницу
Если возникают проблемы со скачиванием видео, пожалуйста напишите в поддержку по адресу внизу
страницы.
Спасибо за использование сервиса ClipSaver.ru
本動画では、基本情報技術者試験 科目B サンプル問題 問16を題材に、Unicodeの符号位置をUTF-8の3バイト形式へ符号化するアルゴリズムについて、提供されたソースに基づいて詳しく解説します。問16は、文字コードの暗記を問う問題ではなく、UTF-8のビット構造と、整数演算を用いたビット分割の考え方を正しく理解しているかどうかを確認する問題です。ビット演算が苦手な受験者にとっては難しく見えますが、処理の意味を一段ずつ追えば、論理的に答えへ到達できる構成になっています。 この問題の目的は、Unicodeの符号位置を表す整数値を、UTF-8の3バイト形式に変換する処理を完成させることです。対象となる符号位置は16進数で800からFFFFまでの範囲であり、UTF-8では3バイトで表現される領域に該当します。UTF-8の3バイト形式は、先頭から順に 1110xxxx、10xxxxxx、10xxxxxx という固定パターンを持ち、各バイトの x の部分にUnicode符号位置のビット列を右詰めで分割して格納します。 プログラム中で用意されている配列 utf8Bytes の初期値は {224, 128, 128} となっています。これは、それぞれ2進数で 11100000、10000000、10000000 に対応しており、UTF-8の3バイト形式において、x の部分がすべて0である状態を表しています。つまり、この配列は「枠」だけが用意された状態であり、これからUnicode符号位置のビットを埋め込んでいくための土台になります。 処理の中心となるのは、for ループによる符号位置 cp の分解です。ループは utf8Bytes の末尾、つまり第3バイトから第1バイトへ向かって逆順に処理を行います。この順序になっている理由は、Unicode符号位置のビット列を下位ビットから順に取り出し、右側のバイトから詰めていくためです。UTF-8の3バイト形式では、第2バイトと第3バイトにそれぞれ6ビットずつ格納できる構造になっており、この6ビット単位で符号位置を分割する必要があります。 ここで重要になるのが、余りと商を使った整数演算の意味です。整数を 2のn乗 で割ったときの余りは、2進数表現における下位nビットを取り出す操作に対応します。また、その商は下位nビットを取り除いた残り、すなわち右にnビットシフトした結果に相当します。この性質を利用することで、ビット演算を直接使わずに、符号位置 cp を6ビットずつ分解することができます。 UTF-8の3バイト形式では、各バイトに割り当てられる x の部分は6ビットです。そのため、cp から取り出す単位は 2の6乗、すなわち 64 になります。プログラム中で cp ÷ 空欄 の余りを求めている部分は、下位6ビットを取り出す処理に対応し、cp ÷ 空欄 の商を再び cp に代入している部分は、その6ビットを削除して次のビット列を準備する処理に対応しています。 具体的には、i が 3 のとき、cp を 64 で割った余りによって下位6ビットを取り出し、それを第3バイトに加算します。次に cp を 64 で割った商に更新することで、すでに使った6ビットを除去します。同じ処理を i が 2 のときにも行い、第2バイトに次の6ビットを格納します。最後に i が 1 のとき、残ったビット列を同様に加算することで、第1バイトの x の部分が埋まります。第1バイトは 1110xxxx の形式なので、理論上は4ビット分しか使いませんが、対象範囲が3バイトUTF-8で表現できる符号位置に限定されているため、この処理で正しく収まることが前提になっています。 以上の理由から、空欄に入るべき値は 64 であり、解答群ではクが正解となります。この問題で問われているのは、UTF-8のビット構造そのものではなく、6ビット単位でデータを切り出す必要がある理由と、その切り出しを整数演算でどう表現しているかを理解できているかどうかです。 問16は、ビット列の扱いを直接問うように見えますが、本質的には配列処理と数値分解の問題です。下位から順に一定ビット数ずつ取り出していくという考え方は、基数変換や圧縮処理など、多くのアルゴリズムに共通しています。本動画を通じて、UTF-8の仕組みとともに、余りと商を使ったビット分解の考え方を整理しておくことで、科目Bの他のビット処理問題にも応用できる理解が身につきます。 基本情報技術者試験の科目Bでは、このように仕様とプログラムを対応付けて読む問題が多く出題されます。問16を通じて、数値演算がビット操作とどのように結び付いているのかを意識しながら読み取る力を養い、本試験でも落ち着いてアルゴリズム問題に対応できるようにしてください。