2016-09-28 25 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