Less than 1 minute
x%2→x&1:位运算&比取模%运算快if((2&1) == 0)m = (a+b) / 2→m = (a + b) >>> 1:防溢出商模
如果除数是 2 的 n 次方, 那么被除数的后 n 位即为余数 (模)。求被除数的后 n 位方法: 与 2^n-1 按位与
int a = 15; int b = 8; // 除数是 2 的 n 次方 System.out.println(a / b); System.out.println(a >>> 3); System.out.println(a % b); System.out.println(a & (b-1));int上限
// 返回long,而不是Long long i = Integer.toUnsignedLong(123);求大于等于的2^n,比如,7→8,8→8
int x = 8; // 方法1:x-1是因为x本身是2的幂时,不需要再加1 int e = (int)(Math.log10(x - 1)/Math.log10(2)) + 1; int result = 1 << e; System.out.println(result); // 方法2:位运算 x--; x |= x >> 1; x |= x >> 2; x |= x >> 4; x |= x >> 8; x |= x >> 16; x++; System.out.println(x);