リンク

2015年3月5日木曜日

勉強のあれこれ5

今日もやっていきま~す

問1

負数を2の補数で表すとき、8けたの2進数nに対し-nを求める式はどれか、ここで、+は加算を表し、OR,XORは、それぞれビットごとの論理和、排他的論理和を表す。

ア (n OR 10000000) + 00000001 イ (n OR 11111110) + 11111111
ウ (n XR 10000000) + 11111111 エ  (n XOR 11111111) + 00000001








答え エ

解説

2の補数表現で負の値を表現するには、ビットごとの値を反転してから、1を加える。ビットごとの値の反転には、オール1とのXORを用いる。したがって、1が8ビット並んだ数値とのXORとなる。その結果に値としての1、つまり00000001を加えたることで-nを表現する。

問2

4ビットの2進数1010の1の補数と2の補数の組み合わせはどれか

 1の補数  2の補数
ア 0101   0110
イ 0101   1001
ウ 1010   0110
エ 1010   1001






答え ア

解説

1の補数は、ビットを反転した0101である。
2の補数は、の補数の値に1を加えた0110である。

問3

最上位をパリティビットとする8ビット符号において、パリティビット以外の下位7ビットを得るためのビット演算はどれか

ア 16進数0FとのANDをとる。 イ 16進数0FとのORをとる。
ウ 16進数7FとのANDをとる。 エ 16進数FFとのXORをとる。







答え ウ

解説

最上位ビットを必ず0にして、他のビットはそのままにするには、最上位が0で、残りが1のビットパターン7FとAND演算をとればよい。

問4

ビット数が等しい任意のビット列aとbに対して、等式a = b と同じことを表すものはどこか。ここで、AND,OR,XORはそれぞれ、ビットごとの論理積、論理和、排他的論理和を表す。

ア a AND b = 00...0 イ a OR b = 11....1 ウ a XOR b = 00....0 エ a XOR b = 11...1








答え ウ

解説

XORであれば、XとYが一致した場合はに0になる。

問5

任意のオペランドに対するプール演算Aの結果とブール演算Bの結果が互いに否定の関係にあるとき、AはBの相補演算であるという。排他的論理和の相補演算はどれか。

ア 等価演算 イ 否定論理和 ウ 論理積 エ 論理和







答え ア

解説

あるオベランドXとYに対する排他的論理和と、その相補演算の真理値表を次に示す。これをみると、排他的論理和の相補演算は、等価演算であることがわかる。
   X   Y  |  XOR  |  相補演算
   0   0       0        1
   0   1       1        0
   1   0       1        0
   1   1       0        1





2015年3月4日水曜日

勉強のあれこれ4

今回も問題を解いていきたいと思います!!!!

問1

0000~4999のアドレスをもつハッシュ表があり、レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。キー値が55550のときのアドレスはどれか。ここで、基数変換法では、キー値を11進数と見なし、10進数に変換した後、下4けたに対して0.5を乗じた結果(小数点以下は切捨て)をレコードのアドレスとする

ア 0260 イ2525 ウ 2775 エ 4405











答え ア

解説

55550を11進数と見なし、10進数に変換する。

5×11⁴+5×11³+5×11²+5×11¹+0×11⁰
=(((5×11+5)×11+5)×11+5)×11
=(665×11+5)×11 = 80520

その結果の下4ケタに対して0.5を乗じる。

0520 × 0.5 = 260

したがって、アドレスは0260となる。

問2

負の整数を表現する代表的な方法として、次の3種類がある。

a 1の補数による表現
b 2の補数による表現
c 絶対値に符号をつけた表現(左端ビットが0の場合は正、1の場合は負)

4ビットのパターン1101をa~cの方法で表現したものと解釈したとき、値が小さい順になるように三つの方法を並べたものはどれか。

ア a,c,b イ b,a,c ウ b,c,a エ c,b,a





答え エ

解説

1の補数は「0」と「1」を反転したものである。2の補数はそれに1を加えたものである。
 1の補数による表現の場合、「1101」の1の補数は「0010」で、10進数では「2」である。したがって、「1101」はー2となる。
 2の補数による表現の場合、「1101」の2の補数は「0011」で、10進数では「3」である。したがって、「1101」はー3となる。
 絶対値による表現の場合、「1101」は先頭ビットが1だから、10進数では「-5」となる。
 以上より、10進数で小さい順に並べるとc,b,aとなる。

問3

浮動小数点形式で表現された数値の演算結果における丸め誤差の説明はどれか。

ア 演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。
イ 数表現の桁数に限度があるので、最下位桁より小さい部分について四捨五入や切上げ、切捨てを行うことによって生じる誤差である。
ウ 乗除算において、指数部が小さい方の数値の仮数部の階部分が失られることによって生じる誤差である。
エ 絶対値がほぼ等しい数値の加減算において、上位の有効数値が失われることによって生じる誤差である。






答え イ

解説

コンピュータの数値表現の桁数には制限があるため、最下位けたより小さい部分については、四捨五入や切上げ・切捨てを行うが、この時に発生する誤差を丸め誤差という。

問4

2進数の浮動小数点表示で誤差を含まずに表現できる10進数はどれか

ア 0.2 イ 0.3 ウ 0.4 エ 0.5








答え エ

解説

浮動小数点形式で表示するためには、まず、その10進数を2進数に変換してから、指数部と仮数部を求める。したがって誤差を含まずに表現できるための条件は、2進数に変換して無限小数にならないことである。0.5は2進数では0.1となるので、誤差を含まずに表現できる。
 0.2と0.3と0.4は、2進数に変換すると無限小数となるので、誤差を含んでしまう。

問5

実数aをa=f×r e と表す浮動小数点表示に関する記述として、適切なんのはどれか

ア fを仮数, eを指数, rを基数という
イ fを基数, eを仮数, rを指数という
ウ  fを基数, eを指数, rを仮数という
エ fを指数, eを基数, rを仮数という













答え ア

解説

浮動小数点表示では、実数を基数変換した後、符号・指数・仮数の順に記憶する。仮数とは、2進数表示の場合、実数の小数点の位置を移動して、先頭の1が整数一桁目から始まるか、または小数点以下一桁目から始まるように調整して表示される形式である。このような調整を正規化という。また、指数は小数点を移動したことによって掛けられる基数のべき数のことである。
 例えば、IEEE754形式の場合は次のように表示される。

0.000101 = 1.010000×2⁻⁴
101000.0 = 1.010000×2⁵

したがって、f×r e と表すと、 fは仮数、 eは指数、 rは基数となる。









2015年3月3日火曜日

勉強のあれこれ3

今回は、練習問題を少し取り上げていきたいと思いますぜ!!

問1

数値を2進数で格納数rレジスタがある、このレジスタに正の整数xを設定した後、''レジスタの値を2ビット左にシフトして、これにxを加える''操作を行うと、レジスタの値はxの何倍になるか、ここで、あふれは発生しないものとする。

ア 3 イ 4 ウ 5 エ 6














答え ウ

解説

左に2ビットシフトすることで4倍となる。そこに元の値を加算しているので、

x × 4 + x = 5x となり、 5倍となる。

問2

16進小数0.C を10進小数に変換したものはどれか

ア 0.12 イ 0.55 ウ 0.75 エ 0.84

















答え ウ

解説

16進小数「0.C」の小数第一位の重みは16⁻¹である。ここで、「C」は10進数で12であるから12/16となる。小数にすると0.75になる。

問3

10進数の演算式7÷32の結果を2進数で表したものはどれか

ア 0.001011 イ 0.001101 ウ 0.00111 エ 0.0111

















答え ウ

解説

7÷32は0.21875である。これを2倍する方法で計算する。小数点以下の値を2倍して、1の桁の数字を読む。
0.2875 × 2 = 0.4375 0
0.4375 × 2 = 0.875  0
0.875  × 2 = 1.75   1
0.75   × 2 = 1.5    1
0.5    × 2 = 1.0    1
 0と1の列から、 10進数の0.21875は2進数の0.00111となる。

問4

2進数の1.1011と1.1101を加算した結果を10進数で表したものはどれか。

ア 3.1 イ 3.375 ウ 3.5 エ 3.8














答え ウ

解説

2進数を加算すると、 1.1011 + 1.1101 = 11.1となる。これを、10進表記に変換する。
1 × 2¹ + 1 × 2⁰ + 1 × 2⁻¹ = 3.5

問5

次の式は、何進法で成立するか、 1015 ÷ 5 = 131 (余り0)

ア 6 イ 7 ウ 8 エ 9












答え イ

解説

余りが0の割り算なので掛け算、131×5 = 1015で考える。
最下位の桁の計算は1×5=5なので、6進以上であれば成り立つ。また、桁上がりはない。
次の桁の計算は、3×5=(15)₁₀をn進数に変換したときに下の桁が1になるものである。

(15)₁₀ = (23)₆ = (21)₇ = (17)₈ = (16)₉

したがって、選択肢 イ の 7進法が正解となる。




2015年3月2日月曜日

勉強のあれこれ 2


さて、今日も勉強した?あれこれを書いていく予定です~

1-5 誤差

誤差

コンピュータ内部では、数値を指定されたビット数で表現しているために、真の値とコンピュータ内部で表現する値との間に差が発生する。この差のことを誤差という。

けたあふれ誤差

コンピュータ内部では、数値を指定されたビット数で表現しているために、表現できる数値の周囲は決まっている。
桁あふれ誤差は、演算結果がコンピュータの表現できる範囲を超えることによって発生する誤差。
特に、表現できる範囲の最大数を超えることを オーバーフロー 最小値を超えることを アンダフロー という。

丸め誤差

指定された有効桁数で演算結果を表すために、切り捨て、切り上げ、四捨五入などを行うために発生する誤差

けた落ち

絶対値のほぼ等しい二つの数の絶対値の差を求めたとき、有効桁数が減るために発生する誤差。

情報落ち

絶対値の非常に大きな数と小さな数の足し算や引き算を行ったとき、小さい数が演算結果に反映されないために発生する誤差。

打切り誤差

浮動小数点数の計算処理の打ち切りを、指定した規則で行うことによって発生する誤差。
 たとえば、円周率の3.14159... を計算処理を打ち切って、3.14とすることによって発生する。

1-6 シフト演算

シフト演算

まずは10進数123で考えてみる。
一つ左にけたをずらすと、元の数値に10をかけた1230になる。二つけたをずらすと、100をかけた12300になる。逆に、一つ右にけたをずらすと元の数を10で割った12.3に、二つ右にけたをずらすと100で割った1.23になる。10進数では左右にけたをずらすだけで、10をかけたり10で割ったりすることができる。
 同じように、2進数では左右にけたをずらすだけで、元の数値に2をかけたり2で割ったりすることができる。左右にけたをずらすことで、簡単に乗算や除算を行うことができ、この操作を シフト演算 という。

論理シフト

符号を考慮しない。論理シフトでは、左シフト・右シフトともあふれたビットは捨てられ、空いたビットには0が入る。

算術シフト

符号を考慮する。左シフトと右シフトとは、空いたビットの取り扱い方が異なる。

算術左シフト

符号ビットはそのままの位置にとどまる。あふれたビットは捨てられ、空いたビットには0が入る。

算術右シフト

符号ビットはそのまま、あふれたビットは捨てられ、空いたビットには符号と同じビットが入る。

シフト演算と加算の組み合わせ

シフト演算を使うと、2n売屋1/2nバイは簡単にできることが分かった。それでは、たとえば2進数mの9倍の値を求めるにはどうすればよいか。
こういう場合は、9を2のべき乗に分解する。

m x 9 = m x (2³ + 1)
    = m x 2³ + m
このように変形することができる。
したがって、mを3ビット左にけた移動したものにmを加えると、9倍の値を求めることができる。

1-7 オートマトン

オートマトン

入力と現在の状態によって、出力が決定される機会をモデル化したもの。オートマトンのうち、初期状態からいくつかの状態を遷移し、採取的に受理状態(終了状態)になるものを有限オートマトンという。

1-8 文字コード

文字コード

コンピュータ内部は0と1の2進数で表現されている。にもかかわらず、コンピュータが文字を扱うことができるのは、文字の一つ一つに、特定の2進数が割り当てられていて、文字という情報をコード化しているため。

代表的な文字コード

・ASCⅡコード(American Standard Code for Information Interchange)
ANSI(米国標準規格協会)で定めた7ビットの文字コード体系で、8ビット目をパリティビットとしている。英字、数字、特殊文字および制御文字からなり、漢字に関する規定がない。
・EBCDIC(Extended Binary Coded Decimal Interchange Code)
IBM社が開発した8ビットからなる文字コード体系で、凡庸コンピュータを中心に普及している。
・JISコード
JISで定めた文字コード体系。7ビットの「ローマ字用7単位符号」や8ビットに拡張した「ローマ字・片仮名名用8単位符号」、ひらがなと漢字を追加した「JIS漢字コード」がある。ひらがなや漢字を表現するには1ビットでは足りないため、1文字を2バイトで表現する。
・シフトJISコード
JIS漢字コードを返還したもので、1バイト目で漢字かどうかがわかり、英数字・カナなどの1パイト文字と混在させても判別できる文字コード体系。
・EUC(Extended Unix Code)
拡張UNIXコードとも呼ばれ、全角文字と半角カタカナ文字を2バイトまたは3ばいとで表現する文字コード体系。UNIXにおける多言語対応の一環として制定され、UNIX上で漢字が扱える。
・UNIXODE
世界各国の文字の多くを一つの体系で表現し、データ交換が円滑にできるように制定された文字コード体系。

1-9 論理演算と論理回路

論理演算と論理回路

ここまで説明してきたように、コンピュータ内部では、電気信号の「ON」と「OFF」を1(真)と0(嘘)に対応させ、情報を処理している。1と0という二つの値を扱う演算が 論理演算 で、論理和(OR)や論理積(AND)、否定(NOT)がその基本。論理演算を実際に行う電子回路が論理回路。CPUには、論理演算を行うための論理回路が組み込まれている。
論理回路はMIL記号で図式化したり、入力の状態とそのときの出ry区の状態を表にまとめた 真理値表で表したりする。