php 语法 $b = (6 << 1);澄清[重复]
Posted
技术标签:
【中文标题】php 语法 $b = (6 << 1);澄清[重复]【英文标题】:php synatax $b = (6 << 1); clarification [duplicate] 【发布时间】:2015-08-29 22:44:54 【问题描述】:我对以下代码sn-ps不是很清楚。
$a = (5 << 0);
$b = (6 << 1);
echo $a|$b;
从 php.net 我知道
【问题讨论】:
php.net examples 还不够?!6
是 0000000000001010
二进制.... 左移 1.... 给出 0000000000010100
,即十进制 12
【参考方案1】:
5 << 0
只产生 5,因为没有进行移位。 6 << 1
会将 6 (110b) 中的位向左移动一位,这将产生 12 (1100b)。所以它本质上是乘以 2。
该 |运算符是按位或,它对 5 (0101b) 和 12 (1100b) 的位进行运算,产生 13 (1101b)
【讨论】:
【参考方案2】:6 是二进制的“110”。如果将“110”向左移动一次,则会得到“1100”,即 12
【讨论】:
【参考方案3】:<<
是按位左移运算符:
00000110
在二进制中是 6
6 << 1
表示每一位都会左移1:
00000110
(6)
变成
00001100
(12)
所以...6 << 1
= 12
5 << 0
没有任何区别,因为没有任何位被移动 (5 << 0
= 5)。
|
是按位“或”运算符:
5|12
使:
00000101
| 00001100
该运算符表示如果两个位都为0,则结果为0,否则为1:
00000101
(5)
00001100
(12)
00001101
(13)
所以5|12
= 13
【讨论】:
【参考方案4】:希望您能在这里找到解决方案
Strange print behaviour in PHP?
更多信息,您可以查看此链接
Reference - What does this symbol mean in PHP?
【讨论】:
以上是关于php 语法 $b = (6 << 1);澄清[重复]的主要内容,如果未能解决你的问题,请参考以下文章