有人可以解釋下面的代碼行嗎?特別是,我沒有得到什麼(short) x & 0x3FF
呢?位和0x3FF是做什麼的?
int num = ... //some number.
return (short) num & 0x3FF;
有人可以解釋下面的代碼行嗎?特別是,我沒有得到什麼(short) x & 0x3FF
呢?位和0x3FF是做什麼的?
int num = ... //some number.
return (short) num & 0x3FF;
它零出的數量的頂部位,這樣的結果是它本質上是一樣的東西爲模數(NUM,1024)(對於NUM的正值)總是1023之間0和。
沒有看到更廣泛的背景下,不可能知道爲什麼這是在這裏,但這就是它的作用。
感謝您的幫助! – user1467855 2012-07-17 05:01:24
將十六進制轉換爲二進制,0x3FF == 0b1111111111
。
&
執行按位與操作,所以它只會保持低位,如果他們被設置爲打開。
這保證答案不會大於0x3FF == 1023,所以答案被保存到short
,因爲我們知道它會適合一個。
感謝您的幫助! – user1467855 2012-07-17 05:01:06
它只保留最右邊的10位。
的java的操作者&
是一個「位與」,意思是兩個操作數中的每一位被AND連接,留下1
如果兩個對應位是1
。
0x3ff
是二進制的1111111111
,所以AND與這將屏蔽所有,但最低的十位。
轉換爲short
(16位數字格式)不起作用。
它拋出所有,但最低的10位。 – Mysticial 2012-07-17 04:54:28