unsignedRightShift method

int unsignedRightShift(
  1. dynamic a,
  2. dynamic b
)

Implementation

int unsignedRightShift(var a, var b) {
  var m;
  if (b >= 32 || b < -32) {
    m = (b / 32) as int;
    b = b - (m * 32);
  }

  if (b < 0) {
    b = 32 + b;
  }

  if (b == 0) {
    return ((a >> 1) & 0x7fffffff) * 2 + ((a >> b) & 1);
  }

  if (a < 0) {
    a = (a >> 1);
    a &= 2147483647;
    a |= 0x40000000;
    a = (a >> (b - 1));
  } else {
    a = (a >> b);
  }
  return a;
}