我使用this代码进行加密家庭作业分配,无法理解第59行
感谢帮助者。
答案 0 :(得分:1)
它是一样的;向左旋转11位以获得int
值。
底部21位向上移动11位,而前11位向下移动21位。
这是散列中使用的常见模式,因为它可以快速重新排列数字的位而不会丢失随机性。
返回通过将指定的int值的二进制补码二进制表示向右旋转指定的位数而获得的值。 (位移出右手,或低位,侧面重新进入左侧,或高位。)
请注意,具有负距离的右旋转等效于左旋转:rotateRight(val,-distance)== rotateLeft(val,distance)。另请注意,旋转32的任意倍数都是无操作,因此即使距离为负,也可以忽略旋转距离的最后五位以外的所有位:rotateRight(val,distance)== rotateRight(val,distance & 0x1F)。
返回: 通过将指定的int值的二进制补码二进制表示旋转指定的位数来获得的值。
public static int rotateRight(int i, int distance) {
return (i >>> distance) | (i << -distance);
}