Java签名右移

时间:2012-10-08 23:47:44

标签: java

我在java代码中看到了这一点。

int n = 300 //passed through a function
size = (n + 31) >> 5 //size = 10

5可能有什么意义? 31 //与int size(31 bit + 1 sign)

有什么关系

由于

1 个答案:

答案 0 :(得分:6)

5的重要性是32 = 2 ^ 5.

size = (n + 31) >> 5

size设置为ceiling(n/32),这是存储n位标志所需的32位整数的数量。

n添加31是为了确保被除数至少与32的最大倍数大于或等于n一样大。