初心者が学ぶ2進数の減算

このQ&Aのポイント
  • アセンブラ言語を学んでいる初心者が2進数の減算について困っています。
  • 減算は負の数の加算で行われ、負の数は2の補数で表されます。
  • 具体的な計算方法について教えてください。
回答を見る
  • ベストアンサー

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

学校で「アセンブラ言語」について学び始めました。 「2進数の減算」が分かりません。 ・減算は負の数の加算でおこなう。 ・負の数は2の補数であらわす。 ・補数を導き出すには「ビット反転」と「+1」する。 この3つのルールのことは何となくわかります。 では、  0110 1001 -0010 1100  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  の計算の仕方を教えていただきたいです。   0110 1001 -0010 1100  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   1101 0011  (ビット反転) +1101 0100  (+1する)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  自分でやってみましたが、この先がわかりません。 (つまり負の数を加算する部分が分からないです) この先の答えと、計算方法を教えてください。 よろしくおねがいします。

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

  • ベストアンサー
  • benelli
  • ベストアンサー率51% (78/152)
回答No.1

アセンブラに限らずコンピューターでの減算処理の内容ですね? 結論だけ先に書きますと、  01101001   (十進数だと105) -00101100   (十進数だと44) ------------------ ↓  01101001 +11010100  (マイナス部分を反転して+1) ------------------ ↓ =12111101  (上下を足してみる) ↓ =00111101  (2進数なので2は上の位に+1する。十進数では61) となります。 原理自体は十進数の計算方法と変わりません。単に2で次の位に移動するだけです。  44556677 +23456789 ------------------ 上記の場合は各位を足した際に10を超えたら次の位に移動させますよね。二進数ではそれが2になるだけです。 そもそも一番大事なことは、「コンピューターは覚えられないことは忘れる」という特性を応用しているということですね。 その部分を押さえていれば授業の理解はぐっと早くなるかと思います。

pupuputyan
質問者

お礼

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

関連するQ&A

  • 16進数 加算 減算 C言語

    今学校でC言語を学んでいるのですが、「16進数同士の加算・減算」を行う問題が出されました。 16進同士の計算となると'A'~'F'や桁上がりの対処など壁にぶち当たっています。 私は10進に直してから加算・減算し、また16進に直す方法しか思いつかず。16進のままで計算は出来ると思うのですが、分かりません。 教えて下さい。お願いします。

  • 2進数の補数表示について

    よろしくお願いします 「負の数(-128)を8ビットの2の補数表示するとき、どうなるか?」 の問題で、わからない箇所があります。 1.最上位ビットは正・負を表す。 2.負の数:-127を2の補数を使用して表現する。    (例)-1(10)==>    まず、正で考える。      ==> 0000 0001(2)      「確認」 1111 1110(反転)            +1(プラス1) ---------- 1111 1111(2)(答え) -127(10)      ==>0111 1111(2)  まず、正で表す。    「確認」        1000 0000(反転)           +1 (プラス1) ---------- 1000 0001(答え) ここからが疑問なんです。    -128(10)の場合      ==>1000 0000(2) まず、正で考える。    「確認」        0111 1111(反転) +1 (プラス1)       -----------      1000 0000(2)(答え) ↑ ・答えがプラスの128(10)=>10000000(2)と同じではない  でしょうか? ・このときの最上位ビットは桁上がりの「1」と正負の違  いを表す「1」のどちらを表しているのですか? ・たとえば「負数を2の補数で表すとき,8ビットで  表現できる整数の範囲は10進数でどれか。」など  の問題で答えが正の127は理解できるのですが、  負は「-128」ということがよくわかりません。 一応検索をしてみましたが、類似回答では理解できませんでした。よろしくお願いします。        

  • 負の2進数の表示がわかりません

    Q1:負の数(例えば10進数の[-2])を2進数,4ビットで表すには, 1010(MSDの[1]は[-]を表して,後半の3桁は[2])か 1110([0001]の2の補数) どちらが正しいのですか?(学校ではどちらも習いました) またQ2のような計算をするには補数による表示でないとなりませんか?(絶対値に符号をつけるだけだと計算が合いません) Q2:4ビットで表された2進数の計算で    0101-0010=0101+(1110)=10011 となり,答えが5ビットになってしまいます.下4桁で考えると答えが合っている気がします.これで合っていますか?

  • 2の補数を使った計算

    ある計算機があり、2の補数を「ビット反転して1を加算する」方法とするときに10進数の計算「100-80」を2の補数を使って計算する場合は16進数で表すと幾つと幾つの加算になるのでしょうか?? 2の補数を使うというのがよくわからないのですが・・・

  • 論理回路

    この問題教えていただけませんか (1)次の減算を符号無し4ビットで補数計算をせよ。 (1) +5 -)+6   0101 +) (2) -5  -)-4 (2)次の16進数減算を補数加算せよ。 (1)4B0C -) 3A56・・・3A56の16の補数を加算

  • 次の2進数の減算を2の補数を用いて計算せよ。

    次の2進数の減算を2の補数を用いて計算せよ。 (1011)2 - (0101)2 お願いします。

  • さまざまな加算器と減算器と乗算器について

    最近、論理回路の実験の授業で加算器・減算器・乗算器に取り組みました。 加算器については、半加算器と全加算器の機能や作り方がわかりますが、 Q1.なぜ二つの半加算器で全加算器が作られるのか、その理由が少し推測をしましたが、やはりはっきりとわかりません。 あと、何bitやら何bitやらの並列全加算器についてもよくわかりません。これは本間にレジュメを読みながらしないと、なかなか回路が作れません。 Q2.bitって何ですか?加算器の個数を示しているのか、それとも出力とか入力とかの個数を示していますか。 それから、減算器も全然原理がわかりません。 Q3.結果が1の補数か2の補数かはどのように決められていますか? 文がちょっと長くて失礼ですが教えていただければ感謝いたします!

  • 補数ということばの意味

    補数ということばの意味 正確には計算機科学の質問なのですが、カテゴリがないのでここに質問しました。 コンピューターで負の数を表すときに、補数表現を使うことがあります。二進数の負の数を表すときに、"1の補数で表す"というときにはビット反転を行い、"2の補数で表す"というときにはビット反転プラス1を行うということはわかるのですが、"1の補数"や"2の補数"ということばの意味がわかりません。何で、"1の"とか"2の"というのですか?

  • 負の整数を求める

    負の整数を表現する問題で質問です。 4ビットのパターン1101を下記の通りに求め、小さい順に並び変える場合、 1, 1の補数による表現 2, 2の補数による表現 3, 絶対値に符号を付けた表現(先頭ビットが0は整数、1は負数) 1の補数は反転なので、0010とわかりますが、回答にこれは10進数の2だからと書いてありました。そこまではわかります。ただ、そのあとに、10進数の2だから、1101はマイナス2、とありました。なぜここでマイナス2となるのでしょうか? 2の補数の場合は反転した1の補数に1を加算して、0011とわかりました。しかし、またそれはマイナス3となっています。 3の絶対値に限っては先頭ビットは1なので負で、残りの3ビットは101で、10進数の5だから、マイナス5とあります。これに限ってはよくわかりません。 どなたか説明をお願いします。

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

専門家に質問してみよう