php取反运算值 {echo ~2;}你知道结果是什么吗?

Posted MarkZeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php取反运算值 {echo ~2;}你知道结果是什么吗?相关的知识,希望对你有一定的参考价值。

echo ~2; 

  请问结果值是多少呢?

答案是  -3

 

为什么?

首先计算机用补码来存储的,正数的原码、反码、补码都是一样的,

例如:

3的原码、反码、补码都是

                 00000000 00000000 00000000 00000011

-3的原码   10000000 00000000 00000000 00000011  (第一个是符号位,1表示负数)

-3的反码   11111111  111111111  11111111  11111100  (符号位第一个不变,其他位置取反)

 

-3的补码   11111111  111111111  11111111  11111101

 

再来看看之前的问题:

// 2的补码   00000000 000000000 00000000 00000010
// ~运算后   11111111 111111111 11111111 11111101  (其实就-3的补码)
echo ~2; // 输出 -3

// 4的补码   00000000 000000000 00000000 00000100
// ~运算后   11111111 111111111 11111111 11111011  (其实就-5的补码)
//          11111111 111111111 11111111 1111010   (反码)
//          10000000 00000000  00000000 0000101   (原码)
echo ~4;//输出 -5

  

 

以上是关于php取反运算值 {echo ~2;}你知道结果是什么吗?的主要内容,如果未能解决你的问题,请参考以下文章

php位运算 与 或 异或 取反

PHP为啥echo 'happy'.1+2.'345'会输出2345

C#'~'按位取反运算符的使用

PHP运算符

php运算符

[周稿2]变量