- このトピックは空です。
-
投稿者投稿
-
-
nobody
ゲスト10進数の7は2進数では111ということは理解できます。
シフトで並べる時、
0111000000
と図で並べてますが、左右の0がどのように入れているか理解できません。
どのように考えれば良いのですか? -
nobody
ゲストテキストの説明不足もあると思いますが、シフト演算では、先ずビット数を定義します。
分かりやすく表現すれば、何桁の電卓を使うことにするね!ってことです。
図では「0111000000」ではなく、「0111.000000」となっていますよ?先ず、シフト演算を行う上で、計算機の仕様を決めなければいけません。
・10ビットでシフト演算すると決めたということ。
・この10ビットの内、(整数部)4ビット(小数部)6ビットと決めたということ。
これに、10進数の7を表現した時、
(整数部)0111 ← 空欄は0で埋める
(小数部)00000 ← 空欄は0で埋める
以上より、「0111.000000」と表現されたということです。
この過程の説明がないので、分かりずらいのだと思います。そして、除算は右シフトなので、
2の-5乗で、5ビット右シフトということです。 -
nobody
ゲスト【補足】
図では「0111000000」ではなく、「0111.000000」となっています
→小数点は、分かりやすいように書かれているだけであって、実際にビットに格納されている訳はないことに注意
※小数点の位置を固定していることから「固定小数表現」とも呼ばれます。
※一方で、有効数字の表現で用いられる「浮動小数表現」というものもあります。例)1.11×2の5乗 -
nobody
ゲスト重要な小数点の記載漏れ失礼しました。
よく理解できました。お忙しいところ迅速なご回答ありがとうございました。 -
nobody
ゲスト申し訳ございません。念の為お伺いさせてください。
7÷32が0111となるため、
ずらす前の整数部が0111となる理解で良いでしょうか?
整数部を4ビットとしたのがなぜかいまいち理解できないです。 -
nobody
ゲスト前の回答者さんとは別の者です。
この過去問題のようにビット数に指定がない場合や、P45の問題1-7、問題1-8のように「桁あふれがない」という場合は、ビット数はいくつでもよく、好きなだけ増やして大丈夫です。
極端な話、
000000111.00000000000
とかでも大丈夫です。7÷32ではなく、7の2進数が111ですね。
割り算の場合、右にシフトをしますが、「111」のままだと何個ぶんシフトしたかわかりにくいです。
そこで、小数点以下に多めに0を付けておいて、
32の2進数が2の5乗 → 割り算をするので「2の-5乗を掛ける」→ 右に5つシフトする
ということから、「1」の数字を5個ぶんずつ右にずらします。-
nobody
ゲスト結論として、整数部は4ビット「0111」でなく、3ビット「111」でも問題ないです。
10進数で、
「4月1日」を「04月01日」と書いたり、
「62.1kg」を「62.10kg」と書いたりするように、
2進数でも、整数部の左や小数部の右に0を付け加えても数の大きさは変わりません。
必要に応じて、必要なだけ0を付けて考えます。
-
-
nobody
ゲスト早速ご回答ありがとうございます!初歩的な質問にも関わらず、ご丁寧に解説していただき感謝します。
-
-
投稿者投稿