Dartでビット単位の符号なし右シフト/ゼロフィル右シフトを実行するにはどうすればよいですか?
たとえば、次のようなものです。
foo >>> 2
ゼロ埋め右シフトには、特定の整数サイズが必要です。Dart の整数は任意の精度であるため、'>>>' 演算子は意味がありません。
ゼロ フィル右シフトをエミュレートする最も簡単な方法は、最初にビット数を指定することです。
例:
(foo & 0xFFFF) >> 2 // 16 bit zero-fill shift
(foo & 0xFFFFFFFF) >> 2 // 32 bit shift.
Dart 整数は 64 ビットになりました。Dart 2.14 以降、>>>
演算子は 64 ビット整数をシフトし、最上位ビットを 0 で埋めます。
使用するユーティリティ関数を定義できます。
int zeroFillRightShift(int n, int amount) {
return (n & 0xffffffff) >> amount;
}
これは、32 ビットの符号なし整数があることを前提としており、それがあれば問題ありません。