ドラタンキ

普段はゲームプログラマとしてゲーム作ったり投げたりしている人間です。

自分がエンジニアなのでエンジニアっぽいゲーム作ってます。

飲み会の時にみなでワイワイ遊んでもらえればと~



2020年春にだすボドゲはエンジニア以外でもプレイできるように作る予定

プログラミングカルタ・コード解説 PART3 A15~A18
2019/11/22 7:14
ブログ

いよいよ解説最後になります。

今までと違い、このページはビットシフトなど、問題の難易度が一気に上がります



A15

引数a=5,b=8の時、返値5

これの答えは Function15のreturn a & ~bとなります。

これの動きを説明していきます。



まずa=5はビットで表すと0101となります

つぎにb=8はビットで表すと1000となります

bの左に~がついていますが、これはNOT演算子で各桁のビットを反転させます



つまり~b=0111となります



最後に&はAND演算子で各桁同士を比較して両方が1ならば1を返します



つまり0101と0111であれば0101が返ります。

よって5が返ります







A16

引数a=5,b=6の時、返値7

これはOR演算子の問題です

return a | b

ORは各桁同士を比較して両方または一方が1ならば1を返します

a=5はbitで表すと0101

b=6はbitで表すと0110

となります



よって0111が返り7が返ります





A17

引数a=5,b=6の時、返値3

^は排他的論理和で各桁同士を比較して一方のみが1の場合に1を返します。

a=5はbitで表すと0101

b=6はbitで表すと0110

よって0011となり返値3となります



A18

引数a=7,b=3の時、返値56

最後は左シフト演算子の問題です。

<<は左シフト演算子を指します。



これは左側のオペランドが、右側のオペランドで定義されたビット数だけ左にシフトします

C#においてintは符号付32bit整数となります



a=7は32bitで表すと 0 000 0000 0000 0000 0000 0000 0000 0111となります

*今までは記載の都合上使わない0は省いて4bitだけで紹介していました。



一番左のビットは負の数か正の数かの判定に使われています。

これをb=3なので左に3つずらします

0 000 0000 0000 0000 0000 0000 0011 1000

これを10進数に直すと56となります