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;}你知道结果是什么吗?
原文地址:http://www.cnblogs.com/trNote/p/7498159.html