当前位置:首页 » 编程语言 » php按位与

php按位与

发布时间: 2023-05-03 15:51:38

php中的运算符有哪些

A选项,看下图:

不用全部记住,记住平时比较常用的就行了,还有记住:算术运算符>关系运算符>逻辑运算符>赋值运算符。

(1)php按位与扩展阅读:

PHP 中的运算符分为:四则运算符、逻辑运算符、三目运算符和位运算符。

运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。

必要时可握枣以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。如果运算符优先级相同,则使用从左到右的左联顺序。

对字符串和数字进裤皮慎行加胡敬法运算。

请看这些例子:

x = 5 + 5; document.write(x); x = "5" + "5"; document.write(x); x = 5 + "5"; document.write(x); x = "5" + 5; document.write(x)。

x = 5 + 5; document.write(x); x = "5" + "5"; document.write(x); x = 5 + "5"; document.write(x); x = "5" + 5; document.write(x)。

⑵ 按位运算作用是什么

按位运算符的作用就是直接对整数在内存中的二进制位进行操作。将一个地址和一个10H进行按位,具体要看在哪一种程序语言中,以及使用哪一种类型的按位运算符。

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

例如:9&5可写算式如下局源早: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。

(2)php按位与扩展阅读:

c语言中,按位运算符的运算优先级共分为15 级。1 级最高,15 级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的按位运算符优先级相同时,则按运桐雀算符的结合性所规定的结合方向处理。“ & ”按位与运算符属于十级,优先级较低。

按位裂肢运算符中的树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值(如果加入多个辅助数组则可以实现区间修改与区间查询)。

参考资料来源:网络—位运算

⑶ php中两个整型数组能不能进行按位或运算(就像c语言和matlab的&运算符一样)举个例子吧,这

给你一个与运算的,或运算的直接改一下&=>||

functiona($ar,$br){

foreach($aras$key=>$value){

$cr[]=$value&$br[$key];

}

return$cr;

}

$ar=array(0,0,1,1);

$br=array(1,0,1,0);

print_r(a($ar,$br));

⑷ 位(bit)运算

一、二进制:所谓二进制就是逢二进一 (0,1), 因为使用二进制只有 0, 1 两个数,简单,易于电子方式实现 , 同时,通过0,1 组合可以表示任意一个数.
二进制有三个重要的概念:

1.原码
用二进制来表示一个数,这个码就是原码.

1 ------> 原码 00000000 0000000 0000000 00000101 = 1 2的零次方+0 2的一次方+1* 2的二次方=1+0+4=5

2.负数的反码=它的原码符号缺猛位不变,其它位取反(0->1,1->0)

反码(正数的反码和它的原码一样 , 负数反码 是 符号位不变其它位取反)
补码(正数的补码和它的原码一样,负数的补码是 它的反码+1)
举例

-1
-1的原码 10000000 00000000 00000000 00000001
-1的反码 11111111 11111111 11111111 11111110
-1 的补码 11111111 11111111 111111111 11111111

3. 在计算机运算的时候,都是以补码的方式来运算的

4+5=>计算机 4-5=4+(-5)

这句话意思就是,不管一个数是正数还是负数,都要被转成补码,然后进行运算.
位运算一览表:

该图的前面四个是位运算
其运算规则是:
按位与&:两位全为1,结果为1
按位或| : 两位有一个为1,结果为1
按位异或 ^ : 两位一个为0,一个为1,结果为1
按位取反 : 0->1 ,1->0
<h3>求解:~2=?</h3>

步骤 : 首先要求出 2的补码

2是正数 所以 原码=反码=补码

2 原码

00000000 00000000 00000000 00000010

~2

11111111 11111111 11111111 11111101 (补码)->原码

? 负数的 原码-》反码-》补码
11111111 11111111 11111111 11111101->

推出其反码 (对补码-1)

11111111 11111111 11111111 11111100

推出原码

10000000 00000000 00000000 0000011 -> -3

~-5=?

-5 的 补码找出来.
-5 原码 10000000 00000000 00000000 00000101
-5 反码 11111111 11111111 11111111 11111010
-5 补码 11111111 11111111 11111111 11111011

~-5取反 00000000 00000000 00000000 00000100 (补码)

4

3 的补码 00000000 00000000 00000000 00000011
2&3 00000000 00000000 00000000 00000010 [补码]

2 的补码 00000000 00000000 00000000 00000010
3 的补码 00000000 00000000 00000000 00000011
2^3 00000000 00000000 00000000 00000001

二:位移运算:在php 中位运算有两种 >> (右移) << (左移)

运算的规则是 :
算术右移:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移: 符号位不变,低位补0

根闷宴据我们前面的规范,来完成几个案例

$a=1>>2;

1 的补码

00000000 00000000 00000000 00000001

1>>2

00000000 00000000 00000000 00000000
$b=-1>>2;

$c=1<<2;

1<<伏罩桥2
1的补码
00000000 00000000 00000000 00000001
00000000 00000000 00000000 00000100

⑸ 为什么要在PHP中使用按位/掩码

Bars bar = new Bars();
bar.setId(rs.getLong("id"));
bar.setName(rs.getString("name"));
bar.setType(rs.getInt("type"));
bar.setCreatorId(rs.getLong("creator_id"));
resultList.add(bar);
if (currentNum == skipEnd - 1)
break;
}

⑹ PHP:“^”符号在这里是什么意思求助!

这是异或运算符,按二进制位进行异或运算(XOR)。

其中:

0^0=0;
1^1=0;
0^1=1;
1^0=1;

举个例子:

echo101^7;//输出98

为什么呢?下面就来分析一下。

101写成二进制是1100101;

7写成二进制是111,即0000111(将两个数的位数补成一样);

根据前面的表,按位运算:

1100101
^0000111
---------------------
1100010

就得到了二进制数1100010,转化为十进制就是98。


希望能解开您的疑惑。


参见:维基网络:逻辑异或:

http://zh.wikipedia.org/wiki/%E9%80%BB%E8%BE%91%E5%BC%82%E6%88%96

⑺ php中 & || ^ 的符号意思。

&:这个符号叫“与”,表示左右两边的操作数都为“真”时才为“真”,口诀是真真为真,真假为假,假真为假,假假为假;

||:这个符号叫“或”,表示左右两边的操作数只要有一个为“真”时就为“真”,口诀是真真为真,真假为真,假真为真,假假为假;

^:这个符号叫“非”,表示将右边的操作数从“真”变成“假(非真)”的结果,从“假”变成“真(非假)”的结果。

⑻ php如何实现js的移位运算符

移位包括有符号左移(<<)、有符号右移(>>)、无符号右移(>>>),其中 js 支持三种移位,PHP只支持前两种移位(没查到第三种),恰好需要PHP进行无符号右移,此处实现一下。先看结果

将数字 $a 向右无符号移动 $n 位

[php] view plain

  • functionuright($a,$n)

  • {

  • $c=2147483647>>($n-1);

  • return$c&($a>>$n);

  • }

  • 下面是这样做的理由
    1、有符号右移的过程

    2 >> 1

    2在计算机中存储的二进制表示为

    000000000 00000000 00000000 00000010

    向右移动1位,高位补0

    000000000 00000000 00000000 00000001

    结果为1

    -2 >> 1

    负数的存储是以补码的方式存储的(相关知识自行了解),这里简单说明

    符号位是 1,-2的表示为

    100000000 00000000 00000000 00000010

    补码:除符号位外,其他位按位取反,然后 + 1

    11111111 11111111 11111111 11111101

    11111111 11111111 11111111 11111110

    向右移动1位,高位补1

    11111111 11111111 11111111 11111111

    结果为 -1(转换成10进制后)

    注意:移位操作是按照计算机中实际存储的二进制形式进行移动的

    2、无符号右移的过程

    2 >> 1同上

    -2 >> 1

    补码右移1位,高位补 0

    01111111 11111111 11111111 11111111

    结果是 2147483647

    无符号右移 n 位,即把所有位向右移动 n 位(有符号右移),然后把前 n 位变成 0。

    要把前 n 位变成 0 ,只需要让其跟一个前 n 位是 0,后 32-n 位是 1 的数进行按位与就可以了。

    构造前 n 位是 0 后 32-n 位是 1 的数:利用正数有符号右移高位补 0 实现,这里用 2147483647 这个正数实现(当然其他数也可以),这个数在计算机中的存储前面已经说了,是

    01111111 11111111 11111111 11111111

    利用这个数构造前 n 位是 0 的数,只需将其向右移动 n-1 位就行了

    -2 无符号右移 2位的过程

    -2右移2位:11111111 11111111 11111111 11111111

    构造数: 00111111 11111111 11111111 11111111

    按位与: 00111111 11111111 11111111 111111

⑼ $ret = $val & (~ $powbit) php 的什么意思

~按位取反。
&按位与。
假设$powbit的值是9,换成2进制:1001,按位反吵喊团后就是0110(6);
然后假设$val是12(1100),与6(0110)渗行按位与后是升橘0100(4);
即是$ret就等于4。

⑽ 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"; //十进制

热点内容
php获取ip服务器 发布:2024-11-01 14:38:13 浏览:442
万科海上传奇二期 发布:2024-11-01 14:22:52 浏览:59
u盘文件夹是空的 发布:2024-11-01 14:19:57 浏览:402
python包含字符串 发布:2024-11-01 14:19:17 浏览:479
c语言的精华 发布:2024-11-01 14:19:02 浏览:588
steam截图文件夹 发布:2024-11-01 14:18:59 浏览:613
ipad怎么往安卓传照片 发布:2024-11-01 14:18:19 浏览:508
我的电脑没有文件夹选项 发布:2024-11-01 14:13:55 浏览:546
vb创建数据库表 发布:2024-11-01 14:11:55 浏览:872
sql联合表 发布:2024-11-01 14:03:25 浏览:962