use ~ for bitwise negation