This blog post assumes a base level of knowledge - comfort in the C programming language and bitwise math is recommended.