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

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

解決済みの質問

【初心者から質問】 2進数の減算について

学校で「アセンブラ言語」について学び始めました。

「2進数の減算」が分かりません。

・減算は負の数の加算でおこなう。
・負の数は2の補数であらわす。
・補数を導き出すには「ビット反転」と「+1」する。
この3つのルールのことは何となくわかります。

では、
 0110 1001
-0010 1100
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  の計算の仕方を教えていただきたいです。







  0110 1001
-0010 1100
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  1101 0011  (ビット反転)
+1101 0100  (+1する)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 

自分でやってみましたが、この先がわかりません。
(つまり負の数を加算する部分が分からないです)

この先の答えと、計算方法を教えてください。
よろしくおねがいします。

投稿日時 - 2007-10-26 23:36:10

QNo.3464262

困ってます

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

アセンブラに限らずコンピューターでの減算処理の内容ですね?

結論だけ先に書きますと、
 01101001   (十進数だと105)
-00101100   (十進数だと44)
------------------


 01101001
+11010100  (マイナス部分を反転して+1)
------------------


=12111101  (上下を足してみる)



=00111101  (2進数なので2は上の位に+1する。十進数では61)

となります。
原理自体は十進数の計算方法と変わりません。単に2で次の位に移動するだけです。

 44556677
+23456789
------------------

上記の場合は各位を足した際に10を超えたら次の位に移動させますよね。二進数ではそれが2になるだけです。


そもそも一番大事なことは、「コンピューターは覚えられないことは忘れる」という特性を応用しているということですね。
その部分を押さえていれば授業の理解はぐっと早くなるかと思います。

投稿日時 - 2007-10-27 00:07:40

お礼

よく分かりました!!
ありがとうございます。頑張って勉強します♪

投稿日時 - 2007-10-27 00:23:51

ANo.1

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

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

回答(1)

あなたにオススメの質問