写了几年PHP的人都好奇说,没有用过位运算符。所以,此处你看二进制看的头晕,就去T¥M¥D吧。
位运算符基本不用,我们也将这个知识设置为了解级别。位运算符的知识点,你不想学习也可以。等以后用到位运算的时候,再来学习吧。
知识学习级别【了解级,有印象即可】。
举例 | 说明 | 详细说明 |
---|---|---|
$a & $b | And(按位与) | 将把 $a 和 $b 中都为 1 的位设为 1。 |
$a | $b | Or(按位或) | 将把 $a 和 $b 中任何一个为 1 的位设为 1。 |
$a ^ $b | Xor(按位异或) | 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。 |
~ $a | Not(按位取反) | 将 $a 中为 0 的位设为 1,反之亦然。 |
$a << $b | 左移 | 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。 |
$a >> $b | 右移 | 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。 |
以上的符号,均为二进制的运算。
二进制大家绝大多数情况下不会遇到,遇到了补一下二进制这一块的知识就会了。
<?php //$x二进制值为: $x = 5; //$y二进制值为: $y = 8; //结果为13 echo $x ^ $y; ?>
变量 | 二进制值 |
---|---|
$x | 0101 |
$y | 1000 |
异或结果 | 1101 |
异或解释:如果x,y两个值不相同,则异或结果为1。如果x,y两个值相同,异或结果为0。
由此可推1101为$x和$y异或出来的结果,1101用二进制转10进制工具转换后的结果就为13。
在线二级制转十进截图:
无动于衷6年前
因为程序中的所有数在计算机内存中都是以二进制的形式储存的,二进制只有0和1组成。位运算说穿了,就是直接对整数在内存中的二进制位进行操作,一字节公有8个bit/位,有兴趣的可以了解下。
Nanson4年前
按位运算:二进制0和1的运算。 按位“与”,相同位置都为1才是1; 按为或,相同位置有1就是1; 按位异或:相同位置不同就是1; 按位左右移:整体向左或右移动。左 右 乘 除。
0
木子凡5年前
$a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。 $a | $b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。 $a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。 ~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。 $a << $b 左移 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。 $a >> $b 右移 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。 以上的符号,均为二进制的运算。
0
博龙6年前
PHP基础语法之 位运算 知识学习级别【了解级,有印象即可】。 举例 说明 详细说明 $a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。 $a | $b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。 $a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。 ~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。 $a << $b 左移 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。 $a >> $b 右移 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。 以上的符号,均为二进制的运算。 <?php //$x二进制值为: $x = 5; //$y二进制值为: $y = 8; //结果为13 echo $x ^ $y; ?> $x 0101 $y 1000 异或结果 1101
0
夜星辰6年前
PHP基础语法之 位运算 知识学习级别【了解级,有印象即可】。 举例 说明 详细说明 $a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。 $a | $b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。 $a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。 ~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。 $a << $b 左移 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。 $a >> $b 右移 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。 以上的符号,均为二进制的运算。
0