php的异或,php异或算法?

用户投稿 78 0

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

php异或算法?

/**

* PHP字符串“异或”算法

* param array key

* @param Request $request

* @return mixed|string|void

*/

public function setSecretKey(Request $request){

$keyArr = $request->input('key');

if(!is_array($keyArr) || empty($keyArr))

return;

foreach ($keyArr as $v){

if(empty($v) || (strlen($v) != 32)){

return;

}

}

if(count($keyArr) == 1)

return $keyArr[0];

$arrLength = count($keyArr);

$initKey = "00000000000000000000000000000000";

$initKeyArr = str_split($initKey);

for($i = 0;$i < $arrLength;$i++){

$newKey = '';

for($j = 0;$j < strlen($keyArr[$i]);$j++){

按位与异或运算的区别?

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。

按位或与按位异或的区别?

按位或(Bitwise OR)和按位异或(Bitwise XOR)都是计算机程序设计中常用的位运算符,它们的主要区别在于对于两个二进制数进行操作时运算结果的不同。

按位或运算符(|)指的是将两个二进制数的每一位进行比较,只要其中至少有一个为1,那么这一位上的结果就是1。例如:8 | 12 = 12,因为8的二进制为1000,12的二进制为1100,按位或运算后得到的结果为1100,即十进制数值为12。

按位异或运算符(^)指的是将两个二进制数的每一位进行比较,如果这两个二进制数的这一位不相同,则该位的结果为1,否则结果为0。例如:8 ^ 12 = 4,因为8的二进制为1000,12的二进制为1100,按位异或运算后得到的结果为0100,即十进制数值为4。

因此,按位或运算符会在两个二进制数的相应位上任意一个为1时,结果为1;而按位异或运算符只有在两个二进制数的相应位上不同时,结果为1。

这两个运算符的使用场景也不同。按位或运算常用于设置标志位、合并掩码以及向内存写入数据等场景;而按位异或运算常用于数据加密、数据校验、颜色变换等场景。

需要注意的是,二者都是逐位进行比较和操作,因此对于大规模数据的处理,可能会带来一定的时间和空间复杂度问题

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

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