Php 回调函数返回($var&;1)?
我已经阅读了PHP手册Php 回调函数返回($var&;1)?,php,bitwise-operators,Php,Bitwise Operators,我已经阅读了PHP手册 但我不明白这一行:return($var&1)有人能解释一下吗?$var&1-是按位和 它检查$var是否为奇数 0 & 0 = 0, 0 & 1 = 0, 1 & 0 = 0, 1 & 1 = 1 因此,第一个回调函数仅在$var为奇数时返回TRUE,第二个回调函数反之亦然(!-为逻辑非)。它使用$var和1执行按位and。由于1只设置了最后一位,$var&1只有在$var中设置了最后一位时才会为真。由于偶数从未设置过最后一位,如果A
但我不明白这一行:
return($var&1)
有人能解释一下吗?$var&1
-是按位和
它检查$var
是否为奇数
0 & 0 = 0,
0 & 1 = 0,
1 & 0 = 0,
1 & 1 = 1
因此,第一个回调函数仅在$var为奇数时返回TRUE,第二个回调函数反之亦然(!-为逻辑非)。它使用$var和1执行按位and。由于1只设置了最后一位,
$var&1
只有在$var中设置了最后一位时才会为真。由于偶数从未设置过最后一位,如果And为真,则数字必须为奇数。&
是按位的“And”运算符。对于1、3、5(和其他奇数)$var&1
将产生“1”,对于0、2、4(和其他偶数)-“0”将产生“1”。是一个和$var
如果$var是十进制4,则它是二进制100。100&1是100,因为最右边的数字是$var中的0,而0&1是0,因此,4是偶数
&
这是位运算符。它使用$var
和1
基本上,它测试$var的最后一位,看看这个数字是偶数还是奇数
$var二进制为000110和1的示例
000110 &
1
------
0
在这种情况下返回0(false),因此数字是偶数,而函数相应地返回false它返回0或1,具体取决于$var
如果$var是奇数,例如(1,3,5…),则$var&1返回1,否则(2,4,6)$var&1返回0奇数的第0()位设置为
1
:
v
0 = 00000000b
1 = 00000001b
2 = 00000010b
3 = 00000011b
^
表达式$var&1
执行$var和1之间的操作(1=0000000 1b
)。所以
表达式将返回:
- 当
的第0位设置为1(奇数)时为1$var
- 当
的第0位设置为0(偶数)时为0$var
&
是和
,但你可能不知道的是&
是有点明智的和
&
运算符在位级别工作,它是按位的。您需要考虑操作数的二进制表示形式
e、 g
710&210=1112&0102=0102=210
例如,表达式$var&1
用于测试最低有效位是否分别为1
或0
、奇数或偶数
$var&1
010&110=0002&0012=0002=010=false(偶数)
110&110=0012&0012=0012=110=true(奇数)
210&110=0102&0012=0002=010=false(偶数)
310&110=0112&0012=0012=110=true(奇数)
410&210=1002&0012=0002=010=false(偶数)
等等…
我明白这是事实,也是事实。但是($var x&1)如何确定is oddIt是否为AND,除了它作用于单独比较的两个数字的每一位(并返回int),而不是作用于两个数字整体(并返回布尔值)的逻辑AND。@gilzero Picture binary numbers。。0001=1(奇数),0011=3(奇数),0010=2(偶数)。看到模式了吗?如果第一位(最右边)为1,则该数字始终为奇数。因此,比较是检查该位是否为真。。如果它是奇数或偶数。它是算术运算符还是比较运算符?@gilzero-两者都不是。。。。这是一个按位运算符,所以($var&1)将$var与数字1进行比较?
000110 &
1
------
0
v
0 = 00000000b
1 = 00000001b
2 = 00000010b
3 = 00000011b
^