Откуда вы взяли ожидание 1?
Ваше понимание побитовых операций ясно показывает, что недостаточно, было бы разумно сначала проработать их, прежде чем публиковать здесь ...
Вы не путаете с ! что является логическим НЕ, а вы?
a ~ побитовое дополнение или операция побитового НЕ сбрасывает все биты с 1 на 0 и наоборот, в зависимости от того, где находится битовая маскаустановите, например, 1 =
00000000 00000000 00000000 00000001
, выполняя ~ поразрядно НЕ, что переводит его на
11111111 11111111 11111111 11111110
, что дает вам максимальное значение меньше1 из целочисленного типа данных в 32-битной системе.
Вот достойная ссылка на это, которая показывает вам, как сделать битовое перемешивание здесь.