Modulo operation on a and b returns a reminder from dividing a by b. It can be implemented by using bitwise AND operator if b is a power of two.
Following samples in C and Python illustrate it.
#include <stdio.h> int main() { // 8(dec) = 1000(bin) // 7(dec) = 111(bin) printf("19 mod 8 (with %%) %d\n", 19 % 8); printf("19 mod 8 (with &) %d\n", 19 & 7); // 16(dec) = 10000(bin) // 15(dec) = 1111(bin) printf("16 mod 16 (with %%) %d\n", 16 % 16); printf("16 mod 16 (with &) %d\n", 16 & 15); }
bash-3.2$ llvm-gcc modulo.c && ./a.out 19 mod 8 (with %) 3 19 mod 8 (with &) 3 16 mod 16 (with %) 0 16 mod 16 (with &) 0
bash-3.2$ python Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> 19 % 8 3 >>> 19 & 7 3 >>>
Why do we need to decrease b?
ReplyDeleteI like your blog, I read this blog please update more content on python, further check it once at python online course