Bit.ShiftRight - 相当于java

Sar*_*rah 2 java vb.net bit-manipulation bit

任何人都可以解释下面发生的事情;以下位移如何工作?

Dim pBuffer(11) As Int 
                pBuffer(0)=4 
                'Firmware Version'
                pBuffer(1)=Bit.ShiftRight(Bit.And(firmware_version, 0xFF00),8)
                pBuffer(2)=Bit.And(firmware_version, 0xFF)
Run Code Online (Sandbox Code Playgroud)

考虑firmware_version = 0001

什么是相同的Java代码?我可以在java中使用Bit.ShiftRight吗?我检查了Java类,并没有完全理解java中等效的'Bit.ShiftRight'操作是什么?

编辑:你能解释一下这里究竟发生了什么吗?

pBuffer(1)=Bit.ShiftRight(Bit.And(firmware_version, 0xFF00),8)
Run Code Online (Sandbox Code Playgroud)

AND如何执行和位移?它是什么表演的?firmware_version是0xFF00还是先移位?你能解释一下吗?

gef*_*fei 5

在java中,您可以分别使用运算符>>>>>有符号和零填充右移.

按位,用Java实现&.

请参阅http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

VB声明

pBuffer(1)=Bit.ShiftRight(Bit.And(firmware_version, 0xFF00),8)
Run Code Online (Sandbox Code Playgroud)

因此可以通过Java实现

pBuffer[1]= (firmware_version & 0xFF00) // Bit.And
            >> 8                        // shift right 8 bits
Run Code Online (Sandbox Code Playgroud)