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

たとえば(13)10=(01101)2, (8)10=(01000)2
という数値を元に考えてみます。
1の補数なので
(-13)10=(10010)2 , (-8)10=(10111)2 となります。
ここで8+(-13)と(-8)+13を求めたいのです。
<8+(-13)>
((01000)2
+(10010)2
((11010)2 bit反転→ (00101)2 = (5)10
よって (11010)2 = (-5)10

<(-8)+13>
(((10111)2
+((01101)2
((100100)2 bit反転→ (011011)2 = ??

どうして答えが5の2進数表現にならないのでしょうか?
解き方が違うのならば、その理由が知りたいのです。

A 回答 (1件)

循環桁上げが起こるためです。


位が元々の桁数以上にあがった場合その上がり値を一番下の位に足しあわせるのです。
今回の場合、100100の先頭の1をとり一番下の位の0に足しあわせます。
100100→00101となり、答えは正の5となるわけです。
    • good
    • 5

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