27

重複の可能性:
この ~ 演算子の意味は何ですか?
PHP(またはおそらく他の言語)でビットが動作しない

~誰かが PHPの演算子について説明してくれますか? 私はそれがNOT-operatorであることを知っていますが、PHP が次のステートメントを変数の負の値から 1 を引いた値に変換するのはなぜですか?

$a = 1; echo ~$a    // echo -2
$a = 2; echo ~$a    // echo -3
$a = 3; echo ~$a    // echo -4  
4

3 に答える 3

32

これは、2の補数演算と呼ばれます。あなたはそれについてもっと詳細にここで読むことができます。

演算子~は(ブール否定ではなく)バイナリ否定演算子であり、そのため、オペランドのすべてのビットが逆になります。結果は、2の補数演算で負の数になります。

于 2012-02-03T14:01:26.127 に答える
6

これはビット単位の NOT です。

すべての 1 を 0 に、すべての 0 を 1 に変換します。したがって、1 は -2 になります (バイナリ表現では 0b111111111110)。

ドキュメント http://php.net/manual/en/language.operators.bitwise.phpをご覧ください

于 2012-02-03T14:00:42.073 に答える
4

~数値のすべてのビットを反転します。2の補数(google it)では、すべてのビットを反転してから1を加算することで、数学的な否定を実現できます。最初のステップのみを実行する場合(つまり、ビットを反転するだけ)、加法逆数から1を引いた値になります。

于 2012-02-03T14:00:44.833 に答える