符号なし32ビット整数をJavaで分割し、2つの別々の16ビット数に分割することは可能ですか?スプリット符号なし32整数再構築可能な2つの16ビット番号
1
A
答えて
3
シフトを含むビット単位の演算を使用できます。
初の逆アセンブル:
ここint original32 = 1000;
int high16 = original32 >>> 16;
int low16 = original32 & 0xFFFF;
System.out.println(high16);
System.out.println(low16);
、下位16ビットを得るために、私達はちょうどゼロアウト上位16ビットに値をマスク。より高い16ビットを得るために、我々はそれらを右にシフトする。下位ビットを(実際には、OR)
int rebuilt32 = (high16 << 16) | (low16 & 0xFFFF);
System.out.println(rebuilt32);
は、ここでは、バック左上位16ビットをシフトしてから '追加':
を再構築します。
1
ビットシフトとキャストを短くすることでそうすることができます。
int i = 1000100010;
short lower = (short) i;
short upper = (short) (i >> 16);
int complete = lower | (upper << 16);
関連する問題
- 1. Clojureの符号なし16ビット整数
- 2. 符号付き32ビット整数を符号なし32ビット整数に変換する方法は?
- 3. 32ビット符号なし整数の逆ビット
- 4. 32ビット符号なし "Real"データ型(2つの16ビット符号付きワードに分割)をjavascriptに変換
- 5. 2つの符号なし16ビット整数をPerlの符号付き32ビット整数に変換する方法
- 6. 2つの符号なし整数(HW)を乗算する32ビットを得る
- 7. 32ビット符号なしオフセットをfseek
- 8. 2つの16ビット符号付きバイトから符号付き整数を取得しますか?
- 9. 32ビットプロセッサで符号付き整数と符号なし整数を使用して符号付き64ビット整数を作成する方法
- 10. 符号付き16ビット整数は2の補数16ビット整数と同じです
- 11. 符号なし整数複数構文
- 12. 2つの符号なし整数の積の上位32ビットを得る効率的な方法C++
- 13. JavaScriptの32ビット符号なしリトルエンディアンを整数に変換する
- 14. HTML5の入力タイプ=番号のみ符号なし整数を
- 15. tclで符号なし32ビット整数を表現する方法
- 16. 符号なしおよび符号なし32ビット整数変数に2^31を代入した後の奇妙な結果
- 17. 符号なし16ビットと符号なし32ビット整数を符号なし8ビットメモリ配列に符号化するにはどうすればよいですか?
- 18. 26ビットの符号なし整数の大きな配列
- 19. React Native - 値 '3130049174'が32ビットの符号付き整数に収まらない
- 20. C++の符号なし整数と符号なし整数の違い
- 21. 符号付き16進数減算対符号なし
- 22. 32ビットの符号なしintビットの数字を反転する
- 23. JavaScriptで符号付き16ビット整数に2バイトを変換する
- 24. 符号なし整数にC++で符号なし整数を書き込む
- 25. 5ビットの符号付き整数?
- 26. 符号なし8ビット整数のビンジュム除算。 C
- 27. ラップオーバーフローを伴うmatlabのカスタム12ビット符号なし整数
- 28. mysqlでnビットの符号なし整数を表す
- 29. 符号なしと符号付きバイナリ整数への追加
- 30. Pythonバイトを「符号なし8ビット整数」に変換する
「short」は署名されているため、15番目のビットが1の場合は符号拡張されます。 –
@PeterLawrey:このコードには 'short'はありません。したがって、' low16'に対して '&0xFFFF'を2回行う必要はありません。代わりに[この回答](https://stackoverflow.com/a/44098811/2711488)を修正したはずです... – Holger