Побітове “не” (~)
~
Побітовим оператором “не” в C++ є символ тільда ~. На відміну від & та |, побітовий оператор “не” застосовується до одного операнда справа. Побітове “не” змінює кожен біт на протилежний: 0 стає 1, а 1 стає 0. Наприклад:
0 1 operand1
----------
1 0 ~ operand1
int a = 103; // у двійковій системі: 0000000001100111
int b = ~a; // у двійковій системі: 1111111110011000 = -104Ви можете бути здивовані, побачивши від'ємне число -104 як результат цієї операції. Це тому, що старший біт у змінній типу int є так-званим знаковим бітом. Якщо старший біт дорівнює 1, число інтерпретується як негативне. Це кодування позитивних і негативних чисел називається доповняльним кодом.
Крім того, цікаво відзначити, що для будь-якого цілого x, ~x те саме, що -х-1.
Іноді знаковий біт у позначеному цілому виразі може викликати деякі небажані сюрпризи.
Повернутись до головної

Коментарі 0