PHP语言PHP语言里的位运算符&、|、^ 、~、〈〈 、〉〉这些符号我一个也不懂,希望高手给个全面的解释!拜

运算结果是怎么得出的?中国现在的教料书太差了,拜请大虾举例说明!

"&" 按位与运算
按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。

例如:9&5可写算式如下:

00001001 (9的二进制补码)

&00000101 (5的二进制补码)

00000001 (1的二进制补码)

<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a&$b);
?>

"|" 按位或运算
按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

例如:9|5可写算式如下:

00001001

|00000101

00001101 (十进制为13)可见9|5=13

<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a|$b)."\n"; //二进制
echo sprintf("%d", $a|$b)."\n"; //十进制

"^" 按位异或运算
按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:

00001001

^00000101

00001100 (十进制为12)

<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a^$b)."\n"; //二进制
echo sprintf("%d", $a^$b)."\n"; //十进制

"~" 求反运算
求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。

例如~9的运算为:

~(0000000000001001)结果为:1111111111110110

<?php
$a = 9;
$b = 5;
echo sprintf("%b", ~$a)."\n"; //二进制

"〈〈" 左移运算
左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。

例如:

a<<4

指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

<?php
$a = 3;
$temp = $a<<4;
echo sprintf("%d", $temp)."\n"; //十进制

“>>” 右移运算
右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

例如:

设 a=48,

a>>4

表示把00110000右移为00000011(十进制3)。

应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定

<?php
$a = 48;
$temp = $a>>4;
echo sprintf("%d", $temp)."\n"; //十进制
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-26
各种语言都不全一样的,我给你看看PHP的吧 能大概了解

章 15. 运算符
目录
运算符优先级
算术运算符
赋值运算符
位运算符
比较运算符
错误控制运算符
执行运算符
递增/递减运算符
逻辑运算符
字符串运算符
数组运算符
类型运算符
运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。所以可以认为函数或任何会返回一个值(例如 print)的结构是运算符,而那些没有返回值的(例如 echo)是别的东西。

有三种类型的运算符。第一种是一元运算符,只运算一个值,例如 !(取反运算符)或 ++(加一运算符)。第二种是有限二元运算符,PHP 支持的大多数运算符都是这种。列表见下节运算符优先级。

第三种是三元运算符:?:。它应该被用来根据一个表达式在另两个表达式中选择一个,而不是用来在两个语句或者程序路线中选择。把整个三元表达式放在扩号里是个很好的主意。

运算符优先级
运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。如果运算符优先级相同,则使用从左到右的左联顺序。

下表从高到低列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

表格 15-1. 运算符优先级

结合方向 运算符 附加信息
非结合 new new
左 [ array()
非结合 ++ -- 递增/递减运算符
非结合 ! ~ - (int) (float) (string) (array) (object) @ 类型
左 * / % 算数运算符
左 + - . 算数运算符和字符串运算符
左 << >> 位运算符
非结合 < <= > >= 比较运算符
非结合 == != === !== 比较运算符
左 & 位运算符和引用
左 ^ 位运算符
左 | 位运算符
左 && 逻辑运算符
左 || 逻辑运算符
左 ? : 三元运算符
右 = += -= *= /= .= %= &= |= ^= <<= >>= 赋值运算符
左 and 逻辑运算符
左 xor 逻辑运算符
左 or 逻辑运算符
左 , 多处用到

左联表示表达式从左向右求值,右联相反。 例子 15-1. 结合方向

<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>

使用括号可以增强代码的可读性。

注: 尽管 ! 比 = 的优先级高,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的输出被赋给了 $a。
第2个回答  2010-11-26
活该
第3个回答  2010-11-27
9999×2222+3333-3334
=(10000-1)×2222+(3333-3334)
=10000×2222-2222+(-1)
=22220000-2223
=22217777

...这些符号我一个也不懂,希望高手给个全面的解释!拜...
"|" 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。例如:9|5可写算式如下:00001001 |00000101 00001101 (十进制为13)可见9|5=13 <?php a = 9;b = 5;echo ...

php中 & || ^ 的符号意思。
&:这个符号叫“与”,表示左右两边的操作数都为“真”时才为“真”,口诀是真真为真,真假为假,假真为假,假假为假;||:这个符号叫“或”,表示左右两边的操作数只要有一个为“真”时就为“真”,口诀是真真为真,真假为真,假真为真,假假为假;^:这个符号叫“非”,表示将右边的操作...

php中取地址运算符&是做什么用的?
引用传递参数的时候就要用到了,没有c语言里面的强大,平时没什么作用的。

php中的&表示什么呢?
PHP中&&与&的区别:1、运算符性质的区别 &&在PHP中是一个逻辑操作符,也叫条件操作符。&是逻辑语言,逻辑上表示两者属于缺一不可的关系,还可以表示一个人和另外一个人之意,与and同义。如A&B,表示A与B,A和B,A×B。2、作用上的区别 &&就是判断两个表达式的真假性,只有两个表达式同时为真...

关于php 位运算符的问题
如果 $a 是有符号整数,第一位是符号位,1表示负数,那么 ~ $a = -2147483642。如果 $a 是无符号整数,第一位还是数据位,那么 ~ $a = 4294967290。以下的就不详细介绍了:a | $b Or(按位或) 将把 $a 或者 $b 中为 1 的位设为 1。a ^ $b Xor(按位异或) 将把 $...

在PHP中【逻辑运算符】和【位运算符】有什么本质的区别?
这个很难细说,不过和C语言中的逻辑运算符和位运算符是一样区别的 下面给个参考(摘至某人博客):一、逻辑运算符:包括:1。&&逻辑与 2。||逻辑或 3。!逻辑非 逻辑运算符用于对包含关系运算符的表达式进行合并或取非 对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算...

PHP8的运算符-PHP8知识详解
= $a ? "100大于99" : "100不大于99" 则输出“100大于99”,展示了它在条件判断中的便捷性。最后的总结从基础的一元到复杂的三元,PHP8的运算符世界充满了丰富多样的可能性。理解并熟练运用这些运算符,将为你的编程旅程增添无尽的趣味和效率。继续探索,让运算符的魔法在你的代码中熠熠生辉吧!

php有哪些运算符?
A选项,看下图:不用全部记住,记住平时比较常用的就行了,还有记住:算术运算符>关系运算符>逻辑运算符>赋值运算符。

C语言中 & 和 && 的区别
1.运算符性质不同。&是一个位运算符。&&是一个逻辑运算符。2.作用不同。&是将两个二进制的数逐位相与,结果是相与之后的结果。&&就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。3.用途限制。&除了是一个位运算符,也是取地址符。&&就是一个...

php中与的区别?
PHP中“?:”指的是三目运算符。三目运算符,也称为条件运算符,它是计算机语言的重要组成部分。它是唯一具有3个操作数的运算符,因此有时称为三元运算符。通常,三目算子的组合是右边界。php中的:是调用类中的静态方法或者常量,属性的符号。PHP,是英文超级文本预处理语言HypertextPreprocessor的缩写...

相似回答