我正在将一些VB代码转换为PHP,并且一行中有一个逻辑运算符AND。
PHP和VB给我不同的结果,因此分解每个步骤,归结为逻辑运算符AND(或&&),就像在PHP中一样。
在PHP中,我有:
($intAscii && $a)
的值为$intAscii = 87
和$a = 128
。
上面的逻辑应该返回0,但是PHP返回1。
将它们转换为二进制:
87 = 01010111
128 = 10000000
所以看来这应该返回0,所以PHP为什么坚持要返回1?
完整功能在这里:
Function IsBitSet($intAscii , $intBit) {
//'change the value of the integer passed by
//'turning on the bit passed
$a=(int)(pow(2 ,(int)$intBit));
$b=($intAscii && $a);
echo '</br>Manual AND 87 && 128 '.(87 && 128) .'</br>';
echo 'is bit set $intAscii='.$intAscii .' $a='.$a.' And = '.( $b).'</br>';
Return(($intAscii && $a) <> 0);
}
和输出:
Manual AND 87 && 128 1
is bit set $intAscii=84 $a=128 And = 1