基本情報技術者試験

【2進数】シフト演算で掛け算、割り算!

前回のシフト演算を使って、掛け算と割り算をやっていきましょう!

【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:シフト分)を繰り返した回数分足す

-基本情報技術者試験