/var/log/masayoshi/masayoshi.life.log

とりあえず、書きたいこと書くだけ。

ビット演算、Python編



何回ビット演算をやれば気が済むのかw、今回ももちろんソースコードから



# coding:EUC-JP

#ミスターの積荷
bit_and = 41 & 30 ;
print bit_and ;

bit_or = 41 | 30 ;
print bit_or ;

bit_xor = 41 ^ 30 ;
print bit_xor ;

print ~ 41 ;



1.ビットand


これも例に外れず、それぞれの数値のビットを比較して


「両方とも『1』ならば『1』、そうでなければ『0』となる」


ではビットandの表を見てもらおう





32168421
41101001
30011110
001000

見てもらうのは8の行だ、両方とも『1』になっている。


その為、結果は8となり。


bit_andという変数には8が代入されて8という結果が表示される。




2.ビットor


これも例にはずれず、ビットandに次の動作が加わります。


「それぞれのビットを比較して、どっちかが『1』の場合は『1』となる」


また今度はビットorの表を見てもらおう





32168421
41101001
30011110
111111

今度は全部が1になってしまった、結果は「63」だ。


なぜ63なのか、それは


「*」の右の数字を全部足したからだ、足すのは「計が『1になっている』所だけだよ」




3.ビットxor


これは「それぞれのビットを比較して、どちらかが『1』である場合1となる。


ただし両方とも『1』の場合は『0』となる。」


この表はこちら





32168421
41101001
30011110
11011

複雑やね




4.これが締めだぞ「ビット反転」


これは「元の値に1を加算して、符号を反転させたもの」となっている。


それはこちら


元の値:41


加算した値:42


反転させた値:−42


とりあえず、ビット演算は終了と