====== Bit functions ====== These functions are for bit math. ===== Powers of two ===== * ''int npo2(int x)'' -- returns the next lowest power of 2 greater or equal to X. * ''int bitlog2(int x)'' -- returns the index of the highest used bit, aka integer binary logarithm. Useful to convert flags like ''1<<8 = 256'' back into ''8''. ===== Working with bit arrays ===== These functions allow you to work with variables as if they were arrays of bits: * ''bool getbit(int a, int i)'' -- returns bit ''a[i]''. * ''int setbit(int a, int i)'' -- performs ''a[i] = 1'' and returns the result. * ''int clrbit(int a, int i)'' -- performs ''a[i] = 0'' and returns the result. * ''int tglbit(int a, int i)'' -- performs ''a[i] = !a[i]'' and returns the result. ===== Unsetting bit flags ===== ''void notflag(int flags, int flag)'' Bit flags can be applied using ''flags & SOMEFLAG''. But removing them requires a more complicated expression ''!(flags & SOMEFLAG)''. ''notflag(flags, SOMEFLAG)'' unsets SOMEFLAG, shorthand for ''!(flags & SOMEFLAG)''.