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 还不够?! 60000000000001010 二进制.... 左移 1.... 给出 0000000000010100,即十进制 12 【参考方案1】:

5 &lt;&lt; 0 只产生 5,因为没有进行移位。 6 &lt;&lt; 1 会将 6 (110b) 中的位向左移动一位,这将产生 12 (1100b)。所以它本质上是乘以 2。

该 |运算符是按位或,它对 5 (0101b) 和 12 (1100b) 的位进行运算,产生 13 (1101b)

【讨论】:

【参考方案2】:

6 是二进制的“110”。如果将“110”向左移动一次,则会得到“1100”,即 12

【讨论】:

【参考方案3】:

&lt;&lt; 是按位左移运算符:

00000110 在二进制中是 6

6 &lt;&lt; 1 表示每一位都会左移1:

00000110(6)

变成

00001100(12)

所以...6 &lt;&lt; 1 = 12

5 &lt;&lt; 0 没有任何区别,因为没有任何位被移动 (5 &lt;&lt; 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);澄清[重复]的主要内容,如果未能解决你的问题,请参考以下文章

入门6:PHP 语法基础——循环

php的基本语法

教你用两行代码给PHP7添加一个“非空合并”语法糖

教你用两行代码给PHP7添加一个“非空合并”语法糖

1php基本语法--函数

php冒泡排序