【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

お世話になります。
初歩的な質問で申し訳ございませんが、質問させてください。
-------------------------------------------------------------
問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち、4倍するとあふれが生じるものはどれか。
ア 1FFF
イ DFFF
ウ E000
エ FFFF
-------------------------------------------------------------
答えはイなのですが、イマイチです。
とある解説だと、4倍すると符号が変わるものがあふれとのことでした。
DFFF
→(2の補数)0010 0000 0000 0001
→(4倍する)1000 0000 0000 0100
確かに符号が変わることは分かるのですが、ウでも
E000
→(2の補数)0010 0000 0000 0000
→(4倍する)1000 0000 0000 0000
こちらも符号が変わることにはならないのでしょうか?

どうぞよろしくお願いいたします。

A 回答 (1件)

先頭ビットが符号を意味するわけですが、


左シフトでは、1ビットずつ左シフトしたときに、
その先頭ビットの符号が変わってしまうようだと「桁あふれ」になります。

chaozuxさんは一度、正数に戻してからお考えのようですが、
コンピュータ内では負数を2の補数表現のままシフトしますから、
直す必要はありませんよ。

では例示します。

イ DFFF
→(シフト前)1101 1111 1111 1111
→(シフト後)0111 1111 1111 1100
※先頭ビットが1から0に変わったので「桁あふれ」。

ウ E000
→(シフト前)1110 0000 0000 0000
→(シフト後)1000 0000 0000 0000
※ぎりぎり先頭ビットは1のままなのでセーフ。

参考URL:http://www.cc.kyoto-su.ac.jp/~kbys/kiso/number/i …
    • good
    • 0
この回答へのお礼

なるほど!2の補数表現のままシフトさせるのですね!
大納得です。
大変わかりやすい回答ありがとうございました。

お礼日時:2008/08/26 08:58

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


おすすめ情報