关于“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】点解答对大家有用。