• ベストアンサー

2進数の計算について

ITパスポートを受けようと思っているのですが、テクノロジ系の初歩的な部分と思われるところでつまずいてしまっています。 2進数同士の引き算、足し算がの繰上げ繰り下げが分かりません; どなたか分かり易く解説お願いします。 因みに、こんな問題です。 「2進数10110を3倍にしたものはどれか。」(選択肢が4つあります) 10110+10110+10110=答え なのは分かっているのですが、普通の計算と違うので何度テキストを読み返しても分かりません; お願いします。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.5

添付を見て、考えてください。 1+1+1=(1+1)+1=10+1=11 1+1+1+1=(1+1)+(1+1)=10+10=100 3つとか4つを1度に計算しないで、2つずつ分けて計算する。

その他の回答 (5)

回答No.6

> 繰上げ繰り下げ 10進数も2進数も同じですよ。 #123456 xxの桁 ######## ##10110 #+10110 ######## #101100 6の桁 0 (0+0) 5の桁 0 (1+1 4の桁へ桁上がりあり) 4の桁 1 (1+1+1[5の桁での桁上がり分]3の桁へ桁上がりあり) 3の桁 1 (0+0+1[4の桁での桁上がり分]) 2の桁 0 (1+1 1の桁へ桁上がりあり) 1の桁 1 (2の桁での桁上がり分) 1234567 xxの桁 ######## #101100 [10110+10110] #+10110 ######## 1000010 7の桁 0 (0+0) 6の桁 1 (0+1) 5の桁 0 (1+1 4の桁へ桁上がりあり) 4の桁 0 (1+0+1[5の桁での桁上がり分]3の桁へ桁上がりあり) 3の桁 0 (0+1+1[4の桁での桁上がり分]2の桁へ桁上がりあり) 2の桁 0 (1+0+1[3の桁での桁上がり分]1の桁へ桁上がりあり) 1の桁 1 (2の桁での桁上がり分)

回答No.4

10110を左に1回シフトしますと2倍値になります。  (CPUのローテイト、アキュムレータ、レフト命令です。キャリーフラグは含みません。)  2回シフトで4倍、3回シフトで8倍値になります。  従いまして、この計算は、1回左にシフトした値と(2x)、そのままの値(x)を足し算すれば  3倍値(3x)が求められます。     xは  10110    2xは 101100  (最下位には0が入ります。)xを<-へ1回シフトした値です。  3xは1000010となります。算盤の様に、そのまま2進数で計算できます。  同様に10倍値は3回左にシフトしたものと(8倍値)1回左にシフトしたもの(2倍値)を同様に  算盤の様に計算します。  2xは   101100  8xは 10110000 10xは 11011100です。

回答No.3

考え方はもう一つあります。 3(10)=11(2)です。だから、 10110(2) x 11(2) を計算すればいいわけです。 10110(2) x 11(2) = 10110(2) x 10(2) + 10110(2) x 1(2) = 101100 + 10110 = 1000010 さらに、もっとずるい方法。 10110(2) = 16 + 4 + 2 = 22(10) 22(10) x 3(10) = 66(10) 66(10) = 64 + 2 = 1000000(2) + 10(2) = 1000010(2) なお、足し算に直して筆算するとこうなります。 ...と、思ったのですが、ここのシステム上桁あわせができないので困りました。 そう難しくはありません。がんばってみてください。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

普通の計算と同じですよ。 10進数は、足して「10」以上になったら繰り上がって、「10」に満たない値が残る。 → 7+8=15→1繰り上がって、5残る 2進数は、足して「2」以上になったら繰り上がって、「2」に満たない値が残る。 → 1+1=2(10進)→1繰り上がって、0残る → 1+1+1=3(10進)→1繰り上がって、1残る 10進数は、引き算で足りない時は上の位から「10」を繰り下げる → 32-7 : 2-7で足りないので、10を繰り下げて 20 + (12 - 7) = 25 2進数は、引き算で足りない時は上の位から「2」を繰り下げる → 10(2進)-1 : 0-1で足りないので、2(10進)を繰り下げて 0 + (2-1) = 1

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

10進数で198+15をやる場合を考えてみましょう。 小学校の算数で下記のような書き方を習っているハズです。  198 +) 15 ~~~~~ まず、1の位、8+5で13。1の位が3であることが確定し、10の位に繰り上がりが発生します。 10の位では9+1と繰り上がってきた1で、9+1+1で11。 10の位が1であることが確定し、同様に100の位に繰り上がりが発生します。 100の位は1+0と繰り上がってきた1で、1+0+1で2。 結果…  198 +) 15 ~~~~~  213 です。 2進数でも同じようにやるだけです。(かく位(というかビット)が0か1しかない。というだけ。)  00010110  00010110 +)00010110 ~~~~~~~~~~ でわかり辛いのならば…  00010110 +)00010110 ~~~~~~~~~~  00101100 +)00010110 ~~~~~~~~~~ と計算していけばいいでしょう。

関連するQ&A