The bitwise complement reverses every bit. In an unsigned width- representation, it sends to for : four-bit
0101 becomes 1010. Width is essential; without a width there is no finite all-ones mask. Python integers instead behave as infinite sign-extended two's-complement values, giving ~x = -x - 1. A width- complement in that setting is (~x) & ((1 << w) - 1). The operation is different from Boolean logical negation, which produces a truth value.[ref]https://docs.python.org/3/library/stdtypes.html#bitwise-operations-on-integer-types. Python documentation, infinite sign-bit convention
New to topics? Read the docs here!