http://funini.com/kei/math/crc_basic.shtml