2016-05-16 61 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); 
} 
相關問題