スゴ技

平成25年度 春 基本情報技術者試験 【問12】(その1)

Blog:IT・情報処理BLOG |

ソフトⅡコース担当 ブログのおにーさまこと高橋です。

今日は平成25年度春期基本情報技術者試験午後問12解説です。問題はIPAのサイトをご覧ください。

この問題はCASLのマスク問題です。ビット操作には

  • 0とAND操作をすると0クリアされます
  • 1とAND操作をするともとの情報が残ります
  • 0とOR操作をするともとの情報が残ります
  • 1とOR操作をすると1になります
  • 1とXOR操作すると反転します
  • 同じ値とXORすると0クリアされます

等があります。マスク処理はこれらをうまく組み合わせて行います。

設問1
この問題のビット列の一部を別のビット列に置き換えるためには

  • 置き換える部分だけを0にする
    • 置き換え部分が0、置き換え部分以外が1であるビット列とANDする
  • 置き換える部分だけ指定したビットパターンにする
    • 置き換え部分が置き換えるパターン、置き換え部分以外が0であるビット列とORする

2語からなるビット列の一部を別のビット列に置き換える流れを図示します。使用するレジスタは問題と同じとし、初期値は設問2で指定されている値です。2語のビット列には、「#A0A0A0A0」が設定されているものとします。

大きな流れは次のようになります。

201307291

この中の黄色の部分(MASK)を作成する流れは次のようになります。

201307292

また、赤の部分(置換ビットパターン)を作成する流れは次のようになります。

201307293

以上の流れを箇条書きで書くと次のようになります。(()内の赤数字は、問題プログラムの行番号、先に処理したり、並行して処理したりしている部分があるので、若干順序が異なる部分があります)

  • マスクの作成
    • GR6に#8000を設定(5)
    • GR3を1減らす(6)
    • GR6をGR3ビット算術右シフト(置き換えるビット数分1にする)(7)
    • GR6をGR7にコピーする(GR6は0から15ビット用、GR7は16から31ビット用マスク)(8)
    • GR3を16にする(9)
    • GR3からGR2を引く(最初の16ビットで置換するビット数、つまり後の16ビットで除くビット数)(10)
    • GR6をGR2ビット倫理右シフトする(11)
    • GR7をGR3ビット論理左シフトする(12)
    • GR6をビット反転する(16)
    • GR7をビット反転する(21)
  • 置換ビットパターンの作成
    • GR0をGR4にコピーする(GR4は0から15ビットの置換パターン)(3)
    • GR0をGR5にコピーする(GR5は16から31ビットの置換パターン)(4)
    • GR6をGR2ビット倫理右シフトする(13)
    • GR7をGR3ビット論理左シフトする(14)
  • 最初の16ビットをGR2にコピーする(15)
  • GR2とMASKのGR6とのANDを行う(17)
  • GR2と置換ビットパターンのGR4とのORを行う(18)
  • GR2を元のメモリに戻す(19)
  • 後の16ビットをGR2にコピーする(20)
  • GR2とMASKのGR7とのANDを行う(22)
  • GR2と置換ビットパターンのGR5とのORを行う(23)
  • GR2を元のメモリに戻す(24)

以上より空欄aにはエ、空欄bにはウが入ります。

設問2
上の置換ビット列作成の図から作成後のGR4の内容をみると、「#000D」です。また、上のマスクの作成の図から反転前のGR6の内容をみると、「#000F」です。よって、空欄cにはイ、空欄dにはウが入ります。

2013年(平成25年度)春期の解説

Date:

神戸電子の
IT・情報処理学科
についてもっと知りたい!

Webアプリケーション等のシステム管理、設計、開発が行える総合的なITエンジニアを育成する学科です。

学科紹介を見る (神戸電子サイト)

学科紹介イメージ
Info神戸電子からのお知らせ

Tagタグ

Teamライターチーム紹介

神戸電子オフィシャルSNS

オープンキャンパスなどの
誰でも参加OKの楽しいイベント
やブログの最新記事などお届けします!

ページの上へ移動