Faster remainders when the divisor is a constant: beating compilers & libdivide
For this equation:    n/d = n * (2^N/d) / (2^N)

What is "N"? They didn't seem to explain that, although they say "Yet for N large enough", and "drop the least significant N bits". Is it just a very large integer? Or maybe the maximum integer for a certain number of bytes?EDIT: I'm reading this Wikipedia article: https://en.wikipedia.org/wiki/Division_algorithm#Division_by...For a 32-bit unsigned integer, you would use N = 33 when dividing by 3? And N = 35 when dividing by 10? I'm struggling to see how this works.EDIT 2: I think this post helped me understand it: https://forums.parallax.com/discussion/114807/fast-faster-fa..."The·basic idea is to approximate the ratio (1/constant) by another rational number (numerator/denominator) with a power of two as the denominator."Their example:    (n/10) = (n*205) >> 11

Maps to the original example:    n/10 = n * (2^11 / 10) / (2^11)

2^11 / 10 = 2048 / 10 = 204.8, which rounds to 205.So N would be 11 in this example, but I guess it could be any value.