uses bitwise or instead of Math.floor

for more information why http://jsperf.com/jsfvsbitnot/13