~ (按位取反) 將每個 0 變 1,1 變 0。
#include <stdio.h>
int main() {
int i = 0;
int n = ~i;
printf("%d\n", n); // -1
return 0;
}
i = 00000000 00000000 00000000 00000000
~i = 11111111 11111111 11111111 11111111
↑ 符號位為 1 → 負數
補碼表示 -1 即為全 1
-1 的補碼:+1 = 00...01 → 取反 11...10 → +1 → 11...11。因此 ~0 == -1 在補碼機器上恆成立。
~x == -x-1對任意整數 x,~x = -x - 1 (補碼下)。常用於無條件實現 -x:~x + 1。