了解PHP&(&符号,按位和)运算符
&是二进制and
。 如果你有一个二进制值,你and
另一个二进制值,那么结果将是按位and
两个。 一个例子:
01101010
& 01011001
= 01001000
最右边的位是1(在这种情况下,数字是奇数),或者是0,在这种情况下,数字是偶数。 如果您&
1的数字,你只能看至少显著位,而如果检查的数量是1或0正如其他人所说,看位运算符的信息他们是如何工作的。
对于二进制系统来说两个基本的操作是OR和AND。
OR意思是'如果A打开或B打开'。 一个真实世界的例子是两个并联的开关。 如果任一个允许电流通过,则电流通过。
AND表示'如果A和B都打开'。 真实世界的例子是两个串联的开关。 如果两者都允许电流通过,电流只能通过。
在计算机中,这些不是物理交换机,而是半导体,其功能称为逻辑门。 他们和开关做类似的事情 - 对电流或电流做出反应。
当应用于整数时,一个数字中的每一位与另一个数字中的每一位相结合。 因此,要理解按位运算符OR和AND,需要将数字转换为二进制,然后对每对匹配位执行OR或AND操作。
这就是为什么:
00011011 (odd number)
AND
00000001 (& 1)
==
00000001 (results in 1)
而
00011010 (even number)
AND
00000001 (& 1)
==
00000000 (results in 0)
(&1)操作因此使用AND逻辑将最右边的位与1进行比较。 所有其他位都被有效地忽略,因为任何东西都没有。 二进制中的偶数也是十进制的偶数(10是2的倍数)。
对二进制系统的其他基本操作包括NOT和XOR。 NOT表示'如果A关闭'并且是仅采用一个信号或'参数'而不是两个的逻辑门的唯一形式。 XOR表示'如果A或B开启,但不是两者'。 然后是NAND,NOR和NXOR,它们基本上不与AND,OR和XOR组合,即NAND意味着'如果A和B不都同时开启'。
在编程中,操作员
& means AND,
| means OR,
~ means NOT, and
^ means XOR.
其他人可以通过组合这些来弥补,例如:
~ (a & b) is equivalent to a NAND operation
PHP的具体说明
按位运算符不适用于浮点值,而在PHP中,浮点值将首先隐式转换为整数。 可以表示为整数的范围以外的数字将被截断为零 - 也就是说,在PHP_INT_MAX上的所有数字在表达式($num & 1)
都会显示为“偶数”)。 如果你想支持PHP_INT_MIN / PHP_INT_MAX之外的数字,你需要使用fmod($num, 2)
。 但是,如果你使用的是64位PHP,那么你的整数比浮点数具有更高的精度。
了解关于按位和PHP的知识也很有趣:
/**
* Regular
*/
echo (true && true); // 1
echo (true && false); // nothing
echo (true || false); // 1
echo (false || false); // nothing
echo (true xor false); // 1
echo (false xor false); // nothing
/**
* Bitwise
*/
echo (true & true); // 1
echo (true & false); // 0
echo (true | false); // 1
echo (false | false); // 0
echo (true ^ false); // 1
echo (false ^ false); // 0
链接地址: http://www.djcxy.com/p/9833.html