2016-09-28 63 views
0

我有點困惑以理解下面這個方法中的'>>'操作。程序員是否嘗試從字節數據數組中獲取第一個和第二個字節而不修改數據數組的內容?那麼hte 255(ff)對於手術意味着什麼?<<字節數組處理中的操作

我很感激任何幫助。

簡單

public static int get2ByteData(final int[] data) { 
    int number = 0; 
    number += (data[0] & 0xff) << 8; 
    number += (data[1] & 0xff) << 0; 
    return number; 
} 
+1

'0xff'是'二進制11111111'。它被用作位掩碼來隔離8個最低有效位。 – Michael

回答

1

這只是一些bitmasking /移位操作。

例如如果data[0]包含這些位1111000010101010,那麼這裏發生了什麼:

 1111000010101010 
&& 0xFF 

     1111000010101010 
&& 0000000011111111 
---------------------- 
     0000000010101010 


     0000000010101010 
<< 8 
---------------------- 
     1010101000000000 

同上,用於,但由於位位移是0,沒有轉移發生的歷史。

基本上,這個代碼正在採取16位數字,並圍繞交換的字節數,從而使位模式xxxxxxxxyyyyyyyy變得yyyyyyyyxxxxxxxx