What's the function of the ~ bitwise operator

2019-01-27 12:35发布

Possible Duplicate:
What does this ~ operator mean here?
Bit not operation in PHP(or any other language probably)

Can someone explain me the ~ operator in PHP? I know it's a NOT-operator, but why does PHP convert following statement to the negative value of the variable minus one?

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

3条回答
相关推荐>>
2楼-- · 2019-01-27 13:08

This is called the two's complement arithmetic. You can read about it in more detail here.

The operator ~ is a binary negation operator (as opposed to boolean negation), and being that, it inverses all the bits of its operand. The result is a negative number in two's complement arithmetic.

查看更多
该账号已被封号
3楼-- · 2019-01-27 13:08

~ flips all the bits of the number. In two's complement (google it), mathematical negation is achievable by flipping all the bits and then adding 1. If you only do the first step (ie: just flip the bits), you have the additive inverse minus 1.

查看更多
一纸荒年 Trace。
4楼-- · 2019-01-27 13:17

It's a bitwise NOT.

It converts all 1s to 0s, and all 0s to 1s. So 1 becomes -2 (0b111111111110 in binary representation).

Have a look at the doc http://php.net/manual/en/language.operators.bitwise.php

查看更多
登录 后发表回答