「みんな教えて! 選手権!!」開催のお知らせ

タイトルどおり、2進数の除算についてわからいので質問をします。
(1)割り切る方法と(2)余りを出す回答があるようなのですが、どこのサイトを見てもいまひとつ理解ができなくて困っています。何か具体的な例を挙げていただきたいと思います。

それに加えて、前者の割り切る方法の結果から分かること(法則性)も知りたいのですが、両者について分かる方がいらっしゃれば、どうかお力添えをお願いします。

A 回答 (4件)

> また追加で質問なのですが、先の100001÷110=101…11で


> (1)余りを出す
> (2)割り切る という二つの計算方法があるらしく、これは(1)の計算方法なのですが、(2)の割り切るとはいったいどのような方法なのでしょうか?

多分ですが、「小数を使って割りきれ」ということだと思います。

       101
   ―――――――
110)100001
     110
    ――――
      100
        0
      ―――
      1001
       110
      ――――
        11

↓(1/2の位に進む)

       101
   ―――――――――
110)100001.0
     110
    ――――
      100
        0
      ―――
      1001
       110
      ――――
        11 0

↓(商の1/2の位の数は1)

       101.1
   ―――――――――
110)100001.0
     110
    ――――
      100
        0
      ―――
      1001
       110
      ――――
        11 0
        11 0
        ――――
           0

商は101.1

> また、その割り切った結果から何が分かるのでしょうか?

分かりません。

10進数ではどんな有限小数も、(2^n)(5^m)で割りきれます(n, mは0以上の整数)。
逆に(2^n)(5^m)で表せない数(例えば6)で割ると、割り切れない場合があります。

対して2進数では、どんな有限小数も(2^n)で割りきれます(nは0以上の整数)。
逆に(2^n)で表せない数(例えば10)で割ると、割り切れない場合があります。

そういったわり算に関する話がありますが、
先ほどのわり算1個だけからそんな結論を得るのは不可能だと思います。

> (1)2進数の補数計算の方法に関して4つまとめる

(1)の「4つ」とは何が4つなのでしょうか?
「たし算、ひき算、かけ算、わり算の4つの計算方法についてまとめなさい」ということでしょうか?
だとしたら、それぞれの計算方法について説明すれば良いと思います。
小学校の算数の教科書には、10進数のたし算やひき算や
かけ算やわり算のやり方が書いてありますよね。
あれを2進数版に書き直すような感じでいいのではないでしょうか?

まず1桁のたし算から始めて、その後繰り上がりの概念を利用して2桁以上のたし算を説明し、
次にたし算の筆算のやり方を……といった感じでやれば良いと思います。

ここの環境だと筆算の繰り上がりや繰り下がり等が表記できないので、
申し訳ないですが、計算方法のまとめを書くのは無理です。

> (2)2進数の1の補数が,ビット毎の0・1反転で得られることを証明

1の補数の定義を知らないので、大したアドバイスはできません。
とりあえず、思いついたことを書いておきます。

1桁の2進数aをビット反転させると、(1 - a)になります。

a = 0の時、(1 - a) = 1
a = 1の時、(1 - a) = 0

次に2桁以上の2進数のビット反転を考えます。
ある2進数Xのn桁目の数をx_nと表現します(x_n = 0, 1)。
この時、Xをビット反転させた数のn桁目の数は(1 - x_n)で表せます。
これは先ほどの、「1桁の2進数aをビット反転させると(1 - a)となる」という話と同じです。

後はこの「n桁目の数がx_nの2進数」と「n桁目の数が(1 - x_n)の2進数(ビット反転させた2進数)」を比較し、
1の補数の定義と合致しているかを確認すればいいと思います。
    • good
    • 1

やり方は、10進数と同じです。


筆算を書いてみますが、もしレイアウトが崩れていたら
コピー&ペーストしてメモ帳などに張り付けてみて下さい。

< 10進数の場合 >
1254÷5
↓(筆算にします)

 ―――――
5)1254

↓(商の百の位は2。5×2を計算)
   2
 ―――――
5)1254
  10

↓(12-10を計算)

   2
 ―――――
5)1254
  10
  ――
   2

↓(十の位に進む)

   2
 ―――――
5)1254
  10
  ―――
   25

↓(最終的に)

   250
 ―――――
5)1254
  10
  ―――
   25
   25
   ―――
     4
     0
     ―
     4

商250、余り4

< 2進数の場合 >
100001÷110
↓(筆算にします)

   ―――――――
110)100001

↓(商の四の位は1。110×1を計算)
       1
   ―――――――
110)100001
     110

↓(1000-110を計算)

       1
   ―――――――
110)100001
     110
    ――――
      10

↓(二の位に進む)

       1
   ―――――――
110)100001
     110
    ――――
      100

↓(商の二の位は0。110×0を計算し、100 - 110×0。計算後、一の位に進む)

       10
   ―――――――
110)100001
     110
    ――――
      100
        0
      ―――
      1001

↓(商の一の位は1。110×1を計算)

       101
   ―――――――
110)100001
     110
    ――――
      100
        0
      ―――
      1001
       110

↓(1001-110を計算)

       101
   ―――――――
110)100001
     110
    ――――
      100
        0
      ―――
      1001
       110
      ――――
        11

商101、余り11

2進数の割り算の筆算でネックになるのは、『2進数のかけ算、ひき算が出てくること』です。
特に今回は引き算がネックです。1000-110を2進数のまま計算できますか?
まずは2進数のまま、たし算の筆算とひき算の筆算ができるようになった方がいいでしょう。
でなければ、かけ算とわり算の筆算もできません。

たし算ひき算の筆算のやり方は、10進法と同じです(かけ算、割り算もそうですが)。
1 + 1 = 10という繰り上がりや、10 - 1 = 1のような繰り下がりに慣れれば楽に計算できます。

< 足し算の例 >
 11
+11
―――
  0(二の位に1繰り上がり)



 11
+11
―――
 10(和の二の位は1 + 1 + 1 = 11。なので四の位に1繰り上がり)



 11
+11
―――
110

この回答への補足

私理解できなかったのは、上記の2進数の割り算の筆算の過程でした。2進数の引き算を使用し、途中過程まではわかったのですが、どうしても数字がずれて計算があわなかったのです・・・。ただ、回答をみてよくどこが間違えていたのか理解できました。

また追加で質問なのですが、先の100001÷110=101…11で
(1)余りを出す
(2)割り切る という二つの計算方法があるらしく、これは(1)の計算方法なのですが、(2)の割り切るとはいったいどのような方法なのでしょうか?
また、その割り切った結果から何が分かるのでしょうか?
もしよろしければ、2進数の補数の計算方法のまとめや、下記の証明もお答えくださると助かります。

よろしくお願いします。

補足日時:2008/10/23 12:42
    • good
    • 0

う~ん....


「100001÷110 がよく分からない」と書かれてますけど, 「どこが」よく分からないんでしょうか?
「2進数の除算」って「10進数の除算」と特段違うことはない (もちろん基数が違うから完全に同じではないけど) ので....

この回答への補足

えっと、33÷6=5余り3の2進数なので、回答が101あまり11だというは分かるのですが、その過程が分からないのです・・・。筆算でとく過程と言ったらいいのでしょうか。

また質問で+αなのですが
(1)2進数の補数計算の方法に関して4つまとめる
(2)2進数の1の補数が,ビット毎の0・1反転で得られることを証明
というのも、もし分かるのでしたら、解説をお願いしたいです。

補足日時:2008/10/23 02:48
    • good
    • 0

10進数の除算ならわかりますか?

この回答への補足

例えば、10進数33÷6なら通常の計算=5余り3という理解でいいんですよね?。
今回はその2進数で、上記だと100001÷110がよく分からないのです・・・。

補足日時:2008/10/23 01:56
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報