電子書籍の厳選無料作品が豊富!

8ビットのレジスタに、ある負数が2の補数表示で入っている時これを4ビット右算術シフト結果ありえるビット列はなんでしょうか?

これの問題はいったい何を言いたいのでしょうか?

A 回答 (6件)

No.4回答者です。



「答えを教えることができない」ではなく「題意(=問題の意味)を予想することしかできない」と書いたのですが・・・何にしても、回答No.4への補足で、題意は分かりました。(最初からそのように書いてくれれば分かったのですが。)

考え方ですが、まずその回答No.4への補足にあった5択のうち(オ)が正解であること、および(オ)以外が正解にはなり得ないことの理由はお分かりになっているでしょうか。

8ビット2の補数表現での負数が1xxxxxxxとなることは、どうでしょう。

仮に8ビット2の補数表現で1abcdefg(a/b/c/d/e/f/gはそれぞれ0または1の1ビットを表す)という負数がある場合、これを1ビット右へ算術シフトすると11abcdefとなることは?

「4ビット右へ算術シフト」した結果は「1ビット右へ算術シフト」を4回繰り返した結果と同じになるというのは、どうでしょうか。

ここまでが理解できていれば、もう全部分かったも同然です。途中で引っかかるようであれば、参考書の、それに相当する部分を復習してみてください。

この回答への補足

まず2の補数かつ負数であるから
1xxxxxxx ですよね

これを4bit右へ算術シフトするのだから
1111xxxx なのだから… 
選択肢から当てはまるものといえば…

あっわかりました!
最初に 1111 がついているのは 
オの11111111しかありませんね。

なるほどこの問題が言いたい事わかりましたよ!

補足日時:2005/07/17 20:53
    • good
    • 0
この回答へのお礼

この問題の意味がわかりました。
C言語検定で頭がいっぱいであったので、
いい復習になりました。感謝してます。
ありがとうございした。

お礼日時:2005/07/17 21:35

一般に、


右シフトすれば1/2に、
左シフトすれば2倍になります。
ところで、シフトには、
いわゆる論理シフトと算術シフトがあって、
符号を考慮するかどうかでシフトと意味が変わってきます。
論理シフトの場合シフトして空いたビットには0が入ります。
10101010→1ビット右にシフト01010101、一番右側の0は捨てられる
算術シフトの場合
10101010→1ビット左にシフト11010101
となります、
-2を右シフトして1/2にするとき、
結果は-1になって欲しいですよね。
そのことを考えると、算術シフトと論理シフトの違いがわかると思います。

この回答への補足

論理シフトと算術シフトの違いは先日学校で習ったばかりです。

復習もかねて書きますね(^^)

算術シフトには符号ビットがついてして符号ビットは固定なんですよね。右へシフトの時はあいたビットに符号ビットと同じ値が挿入されて、左ビットの時は右のあいたビットには0が挿入されるのですよね。

論理シフトは右・左にシフトしたときあいたビットに0を挿入するんですよね。


なんでこんなシフトする必要なるの?その理由も教えてくれました。
私たちもう小学校の頃から掛け算のひっさんで知らないうちにシフト演算してたんですね。それには驚きでした。

じゃあ先生に「はみ出した数はどうなるの?」と質問したら「左にはみ出したらオーバーフロー・右にはみ出したらアンダーフローなんだぞ」といわれたんです。

そうすればこれ、誤差の部分でやったような…うーむ(-。-)
これ書いたら復習します。

補足日時:2005/07/17 21:05
    • good
    • 0
この回答へのお礼

この問題の意味がわかりました。
C言語検定で頭がいっぱいであったので、
いい復習になりました。感謝してます。
ありがとうございした。

お礼日時:2005/07/17 21:35

質問の意味が不明瞭です。



「8ビットのレジスタに、ある負数が2の補数表示で入っている時これを4ビット右算術シフト結果ありえるビット列はなんでしょうか?」という問題があるのですが、題意が読み取れません。

という質問でしょうか。

だとすれば、問題文自体が不明瞭ですので、出題者に題意を質問する以外に「正しい題意」を知る方法はありません。我々(回答者)は題意を「想像」「予想」することはできますが、それが正解かどうか判断できるのは出題者だけだからです。

この回答への補足

8ビットあるレジスタに、ある負数が2の補数表示ではいっている。これを4ビット右へ算術シフトをした結果として、ありうるビット列はいくつか?

ア・00000111
イ・00001111
ウ・10000000
エ・10000110
オ・11111111 正解オ

答えを教えてくれという質問ではなく、問題の意味と考え方が知りたいのです。

補足日時:2005/07/17 20:03
    • good
    • 0

2の補数表示で入っている時これをなんで関係ないからね・・・・・・・



その意味が判って計算できるかが問われてる問題ですね


8ビットのレジスタをビット右算術シフト結果ありえるビット列はなんでしょうか

と同じですね
ある負数が2の補数表示で入っている時は関係ないですね
    • good
    • 0

ある負数が


1001 0000は-16ですから 算術右シフト1ビットで
1000 1000==-8            2ビットで
1000 0100==-4            3ビットで
1000 0010==-2            4ビットで
1000 0001==-1 になりますね。

ですから
1001 0000(-16)から1111 0000(-112)となり ありえる
というか無効にならないビット列は上位4ビットという
意味にとれますが 良い問題とは思えません。

参考URL:http://www5f.biglobe.ne.jp/~pafu/kihonweb/gozen/ …
    • good
    • 0

元の負数の16分の1(商)になるということでしょう、多分。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!