why do the bitwise or do strange things?