int reverseBits(int val, int width) { int result = 0; for (var i = 0; i < width; i++) { result = (result << 1) | (val & 1); val >>>= 1; } return result; }