Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 异或与模的交换性_Math_Bit Manipulation_Xor_Mod - Fatal编程技术网

Math 异或与模的交换性

Math 异或与模的交换性,math,bit-manipulation,xor,mod,Math,Bit Manipulation,Xor,Mod,因此,在探索散列函数时,我注意到以下等式: ((129*N)^prev)%256=((129*N)%256)^prev 对于0到255之间的任何数字N,prev。基本上你可以拖出mod操作而不改变结果,它只对129号有效。谁能告诉我129有什么特别之处吗?当使用模运算时,会发生这样的情况 (a*b) mod m = ((a mod m) * (b mod m)) mod m 如果将此属性应用于b=a a^2 mod m = (a mod m)^2 mod m 重复相同的n次 a^n mod

因此,在探索散列函数时,我注意到以下等式:

((129*N)^prev)%256=((129*N)%256)^prev


对于0到255之间的任何数字
N,prev
。基本上你可以拖出mod操作而不改变结果,它只对129号有效。谁能告诉我129有什么特别之处吗?

当使用模运算时,会发生这样的情况

(a*b) mod m = ((a mod m) * (b mod m)) mod m
如果将此属性应用于
b=a

a^2 mod m = (a mod m)^2 mod m
重复相同的
n次

a^n mod m = (a mod m)^n mod m
因为这对
a
的任何值都有效,所以我们也得到

(a*b)^n mod m = (a*b mod m)^n mod m
因此,无论
m
是否为
256
a
是否为
129
,该属性都是有效的


然而,
129
有一些非常特别的地方,因为
1127229
255
是唯一的剩余
mod 256
,因此
r*r=1 mod 256
。还请注意,
255=-1(mod 256)
127=-129 mod 256
如果将模乘256解释为按位和按255,或者换言之,仅保留最低有效8位,则更容易看出

很明显,XOR不会使信息从高位移动到低位(实际上,两个方向都没有移动),因此无论“向上”发生什么,都不会对低位产生任何影响。它可能会对高位产生影响(XOR可以设置高位,然后取决于and是第一位还是第二位,这些位分别保持设置或重置),但假设在这里不会发生这种情况

代数的,并且分布在XOR上,所以

(a ^ b) & c =
& distributes over ^
(a & c) ^ (b & c)
我们得到了
b&c=b
,因为
c
是255,
b
在0到255之间,所以

(a & c) ^ (b & c) =
by assumptions
(a & c) ^ b

这与乘法无关,它可以是任何形式,我在这里把那部分称为a。

异或与模2加法完全相同