2024-09-27 17:40:30 发布
网友
我正在构建一个伪随机数生成器,用于散列。我们需要使用某种算法。算法如下:
我的问题在于算法的第三步。屏蔽低阶n+2位意味着什么?我在网上看过很多,所以我有一个想法,但是进一步的澄清太好了!在
意思是取2^(2+n)的数。这样0<;=R<;2^(2+n),也就是说0<;=P<;2^n。一种方法是:
R %= 2 ** (2+n)
使用位移位操作,这可能更有效(请注意,掩码是一个常量,因此只需计算一次):
它之所以被称为“屏蔽除低阶位以外的所有比特”的原因是,如果你用二进制写R,这与除去除最后2+n个二进制数字之外的所有内容一样。在
意思是取2^(2+n)的数。这样0<;=R<;2^(2+n),也就是说0<;=P<;2^n。一种方法是:
使用位移位操作,这可能更有效(请注意,掩码是一个常量,因此只需计算一次):
^{pr2}$它之所以被称为“屏蔽除低阶位以外的所有比特”的原因是,如果你用二进制写R,这与除去除最后2+n个二进制数字之外的所有内容一样。在
相关问题 更多 >
编程相关推荐