2

以下で何が起こっているのか説明してください。次のビットシフトはどのように機能しますか?

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)

firmware_version = 0001 を検討してください

これに相当するJavaコードは何ですか? Java で Bit.ShiftRight を使用できますか? Java クラスを確認しましたが、Java での同等の 'Bit.ShiftRight' 操作とは何かがよくわかりませんでした。

編集:ここで何が起こっているのか正確に説明できますか?

pBuffer(1)=Bit.ShiftRight(Bit.And(firmware_version, 0xFF00),8)

AND とビット シフトはどのように実行されますか? それは何に対して実行されますか?firmware_version AND 0xFF00 ですか、それとも最初にビット シフトですか? 説明していただけますか?

4

2 に答える 2

5

Java では、符号付き右シフトとゼロ埋め右シフトにそれぞれ演算子>>とを使用できます。>>>

ビット単位であり、Java では によって実現されます&

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.htmlを参照してください。

VB ステートメント

pBuffer(1)=Bit.ShiftRight(Bit.And(firmware_version, 0xFF00),8)

したがって、Javaのように達成することができます

pBuffer[1]= (firmware_version & 0xFF00) // Bit.And
            >> 8                        // shift right 8 bits
于 2012-12-16T12:15:36.093 に答える
2

VB.NET:Bit.ShiftRight(Bit.And(firmware_version, 0xFF00),8)

(firmware_version と 0xFF00 の Bitwise-and を 8 回右シフト)

Java  : (firmware_version & 0xFF00) >> 8 //or >>> for unsigned right-shift

VB.NET:Bit.And(firmware_version, 0xFF)

0xFF を使用した firmware_version の Bitwise And

Java  : (firmware_version & 0xFF)

Javaの&演算子は、ビットごとの AND 演算を実行します。

参考

于 2012-12-16T12:20:36.473 に答える