unsignedRightShift method
Implementation
int unsignedRightShift(int a, int b) {
var shift = b;
if (shift >= 32 || shift < -32) {
final int m = shift ~/ 32;
shift = shift - (m * 32);
}
if (shift < 0) {
shift = 32 + shift;
}
if (shift == 0) {
return ((a >> 1) & 0x7fffffff) * 2 + ((a >> shift) & 1);
}
var val = a;
if (val < 0) {
val = (val >> 1);
val &= 2147483647;
val |= 0x40000000;
val = (val >> (shift - 1));
} else {
val = (val >> shift);
}
return val;
}