psy*_*ott 9 php bit-manipulation operators
看一下另一位开发人员编写的代码,我遇到了这个问题:
for($i=1; $i<=30; $i++)
{
if($i&1)
$color = '#fff';
else
$color = '#bbb';
}
Run Code Online (Sandbox Code Playgroud)
这个$ color变量稍后在代码中用于行背景颜色.交替的颜色很好.
如果我写这个,我会使用模数运算符(%)而不是按位(&)运算符.
为什么按位运算符在这种情况下有效?使用此方法而不是模数运算符是否有任何优势?
该&
运营商不上的号码按位比较.所以,如果你这样做
$i & 1
然后它会告诉你是否设置了'1'标志,例如二进制:
001010111010
最后一个数字是'1'标志(记住,二进制以相反的顺序变为1,2,4,8等),在这种情况下设置为0.
由于1是二进制中唯一的奇数标志,它会告诉您数字是奇数还是偶数.
如果$ i例如是3,则二进制中它将是011 - 最后一个数字是1(1标志),因此$i & 1
将为真.
例如,如果$ i是4,则二进制中它将是100 - 最后一个数字是0(1标志),因此$i & 1
将为false.
归档时间: |
|
查看次数: |
171 次 |
最近记录: |