ドラタンキ @aohan_doratanki
普段はゲームプログラマとしてゲーム作ったり投げたりしている人間です。
自分がエンジニアなのでエンジニアっぽいゲーム作ってます。
飲み会の時にみなでワイワイ遊んでもらえればと~
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となります