ラベル ビット演算 の投稿を表示しています。 すべての投稿を表示
ラベル ビット演算 の投稿を表示しています。 すべての投稿を表示

2014年6月15日日曜日

CHAPTER2_07_問題05

それぞれの操作が何倍か調べる

ア 「xを2ビット左にシフトした値」に「xを加算」し、更に「1ビット左にシフト」する

2ビット左にシフト →x * 22

xを加算 → x

x * 2+ x = 4x + x = 5x

この時点で5倍になった状態に対しさらに1シフトずらすということは
5xに対し、21したことになる
(5x) * 2 = 5x * 2 = 10x

アは10倍になる

イ 「xを2ビット左にシフトした値」に「xを加算」し、更に「2ビット左にシフト」する。

2ビット左にシフト →x * 22

xを加算 → x

x * 2+ x = 4x + x = 5x

この時点で5倍になった状態に対しさらに1シフトずらすということは
5xに対し、22したことになる
(5x) * 2 = 5x * 4 = 20x

イは20倍になる

ウ 「xを3ビット左にシフトした値」と、「xを2ビット左にシフトした値」を加算する。

3ビット左にシフト →x * 23

2ビット左にシフト→x * 22

x * 2+ x * 22 = 8x + 4x = 12x

ウは12倍になる

エ 「xを3ビット左にシフトした値」に「xを加算」し、更に「1ビット左にシフト」する。

3ビット左にシフト →x * 23

xを加算 → x

x * 2+ x = 8x + x = 9x

この時点で9倍になった状態に対しさらに1シフトずらすということは
9xに対し、21したことになる
(9x) * 2 = 9x * 2 = 18x


エは18倍になる


戻る

CHAPTER2_07_問題04

正の整数Xを設定した後
1.2ビット左にシフト
2.x自体を加える
※オーバーフローは起きない。
(つまり、一番左の桁は捨てられることがない)



まず指数のおさらい
正の指数をかけるとどうなるか?


















つまり、左に2ビットシフトしているので
xに対し、左へ2ビットシフトしたものは、 x * 2ということになる。

x * 2にxを加えるので

x * 22 + x
= x * 4 + x
= 4x + x
= 5x

よって、5倍

答え ウ




もし仮に、指数とビットの関係をどわすれした場合。

問題を満たす具体的な数字を代入して実際に計算してみる。

2進数で正の整数x と言っているので xを1として計算してもよいことになる。









































戻る

2014年6月12日木曜日

CHAPTER2_07_問題03

仮数部・・・指数表現じゃない部分。
情報落ちが発生するには、計算結果が23ビットより大きいビット数を必要とすればよい。


よって、一つずつ計算していき、何ビット必要か調べる。

ア (10.101)2×2-16-(1.001)2×2-15

1.0101×2-15-1.001×2-15
=0.0011×2-15
=1.1×2-12

23ビット以内(13ビット)で表現できるので、情報落ちは発生しない


イ (10.101)2×216-(1.001)2×216

10.101×216-1.001×216
=1.1×216

23ビット以内(17ビット)で表現できるので、情報落ちは発生しない


ウ (1.01)2×218+(1.01)2×2-5

1.01×218+1.01×2-5
=1010000000000000000+0.0000101
=1010000000000000000.0000101

27ビット必要とするので、23ビットで表現しようとすると4ビット情報落ちが発生する


エ (1.001)2×220+(1.1111)2×221

1.001×220+1.1111×221
=1.001×220+11.111×220
=101.000×220
=1.01×222

23ビット以内で表現できるので、情報落ちは発生しない



戻る

CHAPTER2_07_問題02

7ビットのコードの先頭に偶数パリティを付加するので
①16進数を2進数に変換する。
②1の数をカウントし、奇数の時は偶数パリティビットを1とする
 偶数のときは0
③②の結果を元に16進数に戻す。














































30、3F、FAとなるので

答え イ


戻る

2014年6月11日水曜日

CHAPTER2_07_問題01

試行結果を元に状況を整理する








上記より、一番左は実行のビットで
読取り、書込みは、どちらがどちらか不明


ア 2(010)を設定すると読取りと実行ができる。
実行はできない。読取りと書込みのビットは不明であるため間違い。


イ 4(100)を設定すると、実行だけができる。
一番左は実行ビットで、真ん中と右はどちらがどちらか
不明だけどともに0なので実行できないので、これが正解。


ウ 5(101)を設定すると、書き込みだけができる。
一番左のビットが1なので、実行ができる。
また、読取りと書込みのビットはどちらがどちらか不明。
よって、間違い。


エ 6(110)を設定すると、読取りと書込みができる。
実行ができる。そして、読取りと書込みのどちらかが
実行可能だがどちらがどちらのビットか不明なため間違い。

CHAPTER2_07_問5

4ケタ符号なし2進数がオーバーフローするには
最大値1111に+1するとよい。

よって、
10000-0110を計算したものが答え











答え 1010


なお、4ケタ符号ありの場合一番左のビットは記号用となるので
最大値は、111(一番左の記号ビットは1)
この値に+1するとオーバーフローする。


戻る

CHAPTER2_07_問4

算術シフト:符号ありの2進数のシフト演算。
  左シフト:一番上位の桁が押し出され一番下位の桁が0になる
  右シフト:一番下位の桁が押し出され一番上位の桁は符号ビットと同じ値となる


左シフト
0110→1100

右シフト
0110→0011


戻る

CHAPTER2_07_問3

整数部分と、小数部分のそれぞれを2進数に変換



答え 1.11101×22



■111.101 → 1.11101×22になる理由。


























戻る

CHAPTER2_07_問2

奇数パリティとは、1の数が奇数になるように調整するビットのこと。

奇数パリティ以外のビットには、1が奇数あるため
奇数パリティは0でないとおかしい。

答え エラー


戻る

CHAPTER2_07_問1

それぞれ右の桁で揃え、桁が足りないところは
0を補い各桁ごとのOR演算を行う










戻る