前回のシフト演算を使って、掛け算と割り算をやっていきましょう!
-
-
【2進数】シフト演算でラクラク計算!
どうもゼロイチです! 今日勉強していくのは、「シフト演算」です! これは2進数を表すビット列を、左もしくは右にずらす操作 ...
続きを見る
かけ算
これまでのシフト演算の知識から2nや1/2nしかできないのではない、
つまり奇数倍はできないのではないかと思いますが、ちょっとした機転で計算ができてしまいます。
ポイント
かけ算では、2n同士の足し算に置き換えることでシフト演算同様に計算できる
例えば以下のようである。
わり算
わり算は少しややこしいので、初めに「わり算」とは何か考えてみることにしましょう!
かけ算の逆を考えればよく、
例えば「ある学年の1組あたりの人数が30人で7組あった時の人数は?」とあれば、
30 × 7 = 210(人)となります。
よってわり算は「ある学年の人数が210人で1クラスが30人の時、何クラスできるか?」
これは210 ÷ 30 = 7(組)です。
これは210から30を7回引くと0になることを意味します。
以上から「わり算」とは、ある数を割る数で何回引くことができるかということです。
ちょっと難しいのでもう1問。
10 ÷ 2 = ??
二進数に直すと1010 ÷ 10 = ??
①1010を超えない範囲で割る数10を左に2bitシフトした1000を元の数から引くと、10
②繰り返して、10を超えない範囲で割る数10を左に0bitシフトした10を元の数から引くと0
①②より22 + 20 = 4 + 1 = 5 (回引くことができたことになります)
ポイント
わり算は元の数字を超えない範囲で割る数を左にシフトさせ、元の数値からひく
引けなくなるまでこの作業を繰り返す
最後に2n(n:シフト分)を繰り返した回数分足す