Блог пользователя fornaxx

Автор fornaxx, история, 6 недель назад, По-английски

Result: x % n = x & (n-1), where n is some power of 2 i.e. n = 1 << i.

Why this works?

Lets take an example of 14 % 4,

14 = 1110 = 8(4th-Bit) + 4(3rd-Bit) + 2(2nd-Bit) + 1(1st-Bit)
14 = 8 + 4 + 2 + 0
14 = (4*2) + (4) + 2 + 0

This implies 14 % 4 = (4*3 + 2) % 4 = 2 % 4 = 2 i.e. only the last two bits of 14 contribute to the remainder when dividing by 4. In general, when dividing by 1 << i, only the last i bits of x determine the remainder. This remainder can be computed efficiently with x & (n - 1).

Uses

Though a simple observation, but can be leveraged to solve some interesting variations of problem, try Make Almost Equal With Mod.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +15
  • Проголосовать: не нравится