2016-05-16 90 views

回答

1

这是一样的;向左旋转11位,得到int值。

底部21个比特向上移动11而顶部11位向下移动通过21.

它是在哈希因为它很快重新排列号码的比特,而不会失去随机性使用的公共模式。

Source for Integer.rotateLeft

返回由右由位指定数目旋转指定的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); 
} 
相关问题