按位和0x3FF做什么?

use*_*855 3 java primitive-types

有人可以解释以下代码行吗?特别是,我没有得到什么(short) x & 0x3FF呢?

int num = ... //some number.
return (short) num & 0x3FF;
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 6

它将数字的顶部位置为零,这样结果总是在0到1023之间.它与模数(num,1024)基本相同(对于num的正值).

如果没有看到更广泛的背景,就不可能知道为什么会这样,但这就是它的作用.


Pet*_*nov 5

0x3FF1111111111二进制数,这意味着bitwize AND与它将给你最后10位num.