Оператор ~
в C ++ (и других C-подобных языках, таких как C и Java) выполняет операцию побитовое НЕ - все 1 бит в операнде установлены в 0 и все 0 битов в операнде установлены в 1. Другими словами, он создает дополнение исходного числа.
Например:
10101000 11101001 // Original (Binary for -22,295 in 16-bit two's complement)
01010111 00010110 // ~Original (Binary for 22,294 in 16-bit two's complement)
В вашем примере ch=~((ch^i))
выполняет побитовое НЕ для побитового XOR из ch
, а i
затем присваивает результат ch
.
Оператор побитового НЕ обладает интересным свойством, заключающимся в том, что при применении к числам, представленным дополнением до двух , он меняет знак числа и затем вычитает один (как вы можете видеть в приведенном выше примере).
Возможно, вы захотите ознакомиться с различными операторами языка C ++ , поскольку поиск операторов в поисковых системах затруднен. А еще лучше, вы можете получить хорошую книгу по C ++ , которая расскажет вам об операторах C ++.