ホームページ >バックエンド開発 >PHPチュートリアル >php ビット演算子について
4 つの一般的なビット演算子: & (ビット単位の AND)、| (ビット単位の OR)、^ (ビット単位の XOR)、~ (ビット単位の否定)
& (ビット単位の AND): 対応するビットが両方とも 1 の場合、 & 演算の後は 1、それ以外の場合は 0
になります| (ビットごとの OR): 対応するビットの 1 つが 1 の場合、| 演算の後は 1 になり、両方が 0 の場合は 0
になります^ (ビットごとの XOR): 対応するビットが同時に 1 でない場合、^ 演算後に 1 になります。同時に 0 の場合、0 になります。両方のビットが同時に 1 の場合、 ^ 演算も 0
~ (ビットごとの否定) :$a+(~$a)=-1
コンピュータでは、負の数は正の値の補数形式で表現されます。
ここでは、元のコード、逆コード、補完コードという 3 つの概念を知る必要があります。
元コード: 整数を絶対値に従って 2 進数に変換したものを元コードといいます。
8 の元のコードは次のとおりです: 0000 0000 0000 0000 0000 0000 0000 1000
逆コード: 2 進数はビット単位で反転され、その結果得られる新しい 2 進数は元の 2 進数の 1 の補数と呼ばれます。否定演算とは、1が0になる、0が1になることを意味します。
8 ビットごとの否定: 1111 1111 1111 1111 1111 1111 1111 0111
補数コード: 補数コードに 1 を加えたものを補数コードと呼びます。つまり、数値の補数を取得するには、まず補数を取得し、次にその補数に 1 を加算します。その結果得られる数値は補数と呼ばれます。
正の数の補数は元のコードと同じです; 負の数の補数はその補数の最後の桁に 1 を加算します
補数に 1 を追加します: 1000 0000 0000 0000 0000 0000 000 1001このようにして、負の数の正の値が 2 の補数形式で取得されます。つまり-9です。
参考: http://www.cnblogs.com/setsail/archive/2013/05/22/3093542.html
http://my.oschina.net/WarRome/blog/90707
上記の説明は私自身はよく理解できませんでしたが、実際には $a+(~$a)=-1
例は次のとおりです:
$m=8;
$n =12;
$p=-109 ;
$mn=$m&$n;
echo $mn."
";
$mn=$m|$n;
echo $mn."
$mn=$m ^$n;
echo $mn."
";
$mn=~$m;
echo $mn."
";
$mn=~ $p;
エコー$mn。」