2011-08-07 6 views
2

私のビットマスクはバイトであり、正確にそのまま保ちたいと思っていますが、記号が拡張されていると思います。同じビットが設定されている限り、バイトが正または負であると見なされるかどうかは気にしません。私はちょうどコードをデバッグするのに数時間を費やしていました。そして、マイナスビットになったときに私のバイトビットマスクに問題があることがわかりました。私はこれに問題があった唯一の人になることはできません。符号なしであるかのようにバイト動作をさせる方法はありますか?Javaで符号拡張ビットマスクを回避する方法は?

+0

より大きな整数型を使用できます。 –

+2

おそらく問題のコードを投稿するべきです。 –

答えて

1

コードに右シフトがありますか? 「>>>」の代わりに「>>」を使用しますか?あなたの問題があります。

+0

ええ、私は>>を使うので、>>>を使うべきですか?私はそれをチェックします。 –

+0

問題は解決しました、ありがとう! –

5

演算子(またはビット単位)演算子で使用するときに符号を拡張しないようにするには、明示的にビット単位で指定する必要があり、0xFFで指定する必要があります。若干醜いように見えますが、あなたが持っているものがやむを得ないのであれば、byteです(そしてうまくいけば、JITはイディオムを認識し、効率的なコードを作ることができればうれしいです)。

+0

私はそれが私がしなければならないことだと思います。 –

関連する問題