数字在计算机中是以二进制存储的,位运算就是对二进制的位进行操作。它有如下多种操作:
与(&)
按位与运算,当两者都为1结果为1
//00000011
//00001000
var_dump(
3 & 8 //0
);
//00000011
//00001000
var_dump(
3 | 8 //11
);
//00000011 =》 11111100 =》10000100
var_dump(
~ 3 //-4
);
//0000 0011
//0001 0000
var_dump(
3 ^ 8 // 11
);
//0000 0011
var_dump(
3 << 1, // 6
3 << 2 // 12
);
//0000 0011 => 0000 0001
//0000 0011 => 0000 0000
//1000 0011 => 1111 1101(补码) => 1111 1110 => 1000 0010
var_dump(
3 >> 1, //1
3 >> 2, //0
-3 >> 1 //-2
);
var_dump(
PHP_VERSION,
E_ALL,
E_NOTICE,
E_ERROR,
E_RECOVERABLE_ERROR,
E_ALL & ~E_NOTICE, //显示出E_NOTICE外所有错误
E_ALL ^ E_NOTICE, //显示出E_NOTICE外所有错误
E_ERROR | E_RECOVERABLE_ERROR //只显示错误和可恢复错误
);
//结果如下:
string(6) "5.4.33"
int(32767)
int(8)
int(1)
int(4096)
int(32759)
int(32759)
int(4097)