php 位运算,按位与异或运算的区别?

用户投稿 96 0

关于“php_按位与运算”的问题,小编就整理了【4】个相关介绍“php_按位与运算”的解答:

按位与异或运算的区别?

1、按位或:如果两个相应的二进制位有一个为1,则该结果为1,否则为0。

2、按位异或(^):如果两个相应的二进制位值不同则为1,否则为0。

3、按位与(&):如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。按位的各种运算,结合图形看起来是不是还挺简单,不过这些都是正数的操作,负数还涉及到补码。

注意事项:

1、如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。

2、以与运算为例说明如下:在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行与运算,右端对齐后,左边不足的位依下面三种情况补足:

如果整型数据为正数,左边补16个0。

如果整型数据为负数,左边补16个1。

如果整形数据为无符号数,左边也补16个0。

什么是按位进行与运算?

导言:在脚本中位运算通常用于调用 Windows API 时或某些特殊场合中。这里位运算中的位是指二进制位,所以位运算都是二进制数值之间的运算。不过在脚本中也可以看到十进制数进行位运算,实际情况是脚本解释器会自动将其转换为二进制数并计算出结果。

请参阅:

位运算简介

位即是指二进制的表示,如十进制的"5"按位表示就是"00000101"。两者相与时,都是1时结果为1,不全是1时结果为0;两者相或时,都是0时结果为0,不全是0时结果为1。举例:十进制的"6"和"10"按位与、或分别是,"00000110"和"00001010"按照每一位进行与、或,结果分别是"00000010"和"00001110",即"2"和"14"。

“按位异或运算符”是什么意思?举例说明?

^按位异或的意思。

就是“不同为1,相同为0” 1^1=0 0^1=1 0^0=0 举个例子:3^5=? 3=(0011)B 5=(0101)B 0011 ^ 0101 ———— 0110 0110的十进制数是6 所以3^5=6

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

同或异或的运算?

“同或”是一个数学运算符。 他应用于逻辑运算。 其运算法则为a同或b=ab+a‘b’(a'为非a)。

真“同或”假的结果是假,假“同或”真的结果也是假,真“同或”真的结果是真,假“同或”假的结果是真。 就是说两个值相同,则同或结果为真。 反之,为假。 ——简称同真,异假。 即,同或:相同为一,不同为零。

同或符号为⊙。

同或和异或互为非运算。

同或公式:

a⊙b=ab+a'b'(a'为非a,b'为非b);

运算法则:相同为1,不同为0

运算符号:⊙

表达式:a⊙b=ab+a'b'(a'为非a,b'为非b);

异或运算

运算法则:相同为0,不同为1

运算符号:⊕

表达式 :a⊕b=a'b+ab'(a'为非a,b'为非b)

异或运算的常见用途:

(1) 使某些特定的位翻转

例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。

10100001^00000110 = 10100111

(2) 实现两个值的交换,而不必使用临时变量。

例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:

a = a^b;   //a=10100111

b = b^a;   //b=10100001

a = a^b;   //a=00000110

位移运算

左移运算

运算符:<<

表达式:m<

运算规则:左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0

eg:00001010 << 2 = 00101000

右移运算

运算符:>>

表达式:m>>n(表示把m右移n位)

到此,以上就是小编对于“php_按位与运算”的问题就介绍到这了,希望介绍关于“php_按位与运算”的【4】点解答对大家有用。

抱歉,评论功能暂时关闭!