https://www.cppbetterexplained.com/posts/cpp-bitwise-operators/