代码:
<?php $a=8; $b=~$a; //按位取反 echo $a."<br>"; echo $b; ?> 输出结果: 8 9 在计算机中,负数以其正值的补码形式表达。 在这里我们就要知道三个概念了,原码,反码和补码。 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。取反操作指:1变0, 0变1。 补码:反码加1称为补码。也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。 正数的补码与其原码相同;负数的补码是在其反码的末位加1 由上所知,8按位取反以十进制输出的过程: 1、8的原码为:0000 0000 0000 0000 0000 0000 0000 1000 2、按位取反:1111 1111 1111 1111 1111 1111 1111 0111;由于最前面一位为1,所以为负数。即即按位取反后得的为负数 下面以十进制输出:负数以其正值的补码形式表达: 3、2步所得的数(是其正为取反,符号不变,最高位还是为1)取反:1000 0000 0000 0000 0000 0000 000 1000 4、反码加1:1000 0000 0000 0000 0000 0000 000 1001;这样就得负数的正值的补码形式。也就是-9了。