プロが教えるわが家の防犯対策術!

問題:
8ビットの2進数00010101から11010011を右に2ビット算術シフトしたものを減じた値は2進数でいくらか。ここで、負の数は2の補数表現にするものとする。

右に2ビット算術シフトするというのがよくわかりません。
解説には11010011を2ビット算術シフトした値は11110100と書かれています。
減算はできるのでシフトの仕方を教えてください。

よろしくお願いします。

A 回答 (1件)

2進数の世界では、左端のビットで正負を表す


0なら正値で1なら負値

右にシフトを単純に行うと、11010011が00110100になるがこれだと
負の数がいつの間にか正の数になってしまう
だから算術シフトと言われたら、左端の符号ビットをコピーしていく
1ビットなら「1110 1001」
2ビットなら「1111 0100」
という感じ

論理シフトであれば、符号とか関係無いのでシフトする際に埋めるビットは常に「0」で良い
    • good
    • 1
この回答へのお礼

なるほど!なんとなく分かりました。
ありがとうございました‘`*

お礼日時:2022/07/27 10:09

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