みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

1の補数の2進数での減算(基本的な事だけど)

たとえば(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進数表現にならないのでしょうか?
解き方が違うのならば、その理由が知りたいのです。

投稿日時 - 2005-08-29 21:49:39

QNo.1613591

すぐに回答ほしいです

質問者が選んだベストアンサー

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

投稿日時 - 2005-08-29 21:57:20

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問