运算符~的作用是什么?

书上讲运算符~的作用是取反码,但是我用编译器打印出~1的结果是-2.
按理说正数的反码应该就是它本身,即1的反码就是1.
请问各位大佬,我哪里理解出了错?

计算的时候用的是 int吧。假设int在你的环境中是4个字节(32位),则第一位是符号位。
1 = 0x00000001,
~1 = 0xfffffffe,
正好对应的是补码表示的-2