My Opera is closing 1st of March

Pocket reference

It is a FAMILY, and it is WORK, and it is a Daily Event

Subscribe to RSS feed

某掲示板での質問(ビット)

Keigoです。 今後の事も考えこのようなスレを立てさせていただきました。 日記にもアップしましたが相手にされそうもないのでこちらでも質問させてください。 なお、コピペで失礼します。 ------------------------------------------------------------------------------- ビット演算子がチンプンカンプン。ググってみてもCに結びついて余計にわからない。 そんな中この表で演算子の意味はわかった。 要は2進数という言葉にこだわらずにON、OFFで考えると簡単だった。
0101 & 0011 = 0001
0101 | 0011 = 0111
0101 ^ 0011 = 0110
~0101 = 1010
0101 << 1 = 1010
0101 >> 1 = 0010
で、このコードの意味がわからない。 改訂新版 基礎PHPより抜粋*1
$a=5; /* 0101 */
$b=9; /* 1001 */
$c=1; /* 0001 */
print (($a & $b)."<br />"); /* 0001 */
print (($a | $b)."<br />"); /* 1101 */
print (($a ^ $b)."<br />"); /* 1100 */
print ((~$a)."<br /">); /* 1010 */
print (($a << $c)."<br /">); /* 1010 */
print (($a >> $c)); /* 0010 */
結果は
1
13
12
-6
10
2
コメント部分はわかりますがなぜ結果がそうなるのかが理解できません。 アドバイスお願いします。 ちなみにあまり必要ないからわからなくてもいいよっていうのもOKです。 わからないまま先に進みたくないだけです。