Побітове “не” (~)

Документація

~


Побітовим оператором “не” в 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

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.