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