首先给出结论,对于任意整数X,对X按位取反后得到X的相反数减1,即~X = -X - 1
证明:
给定正整数N,与之对应的负整数为-N
在计算机中正整数的原码反码补码都相同,而为了适配负整数的四则运算,负整数的二进制是由对应的正整数二进制按位取反再加1得到
可以得到 :
负整数 = ~(对应正整数) + 1
转化为数学公式
① :-N = ~N + 1
也就是说对于正整数的按位取反计算公式为 :
② :~N = -N - 1
对公式②两边取反得到
③ :N = ~(N - 1) 即~(-N - 1) = N
将N替换成N - 1
~(-N) = N -1即
④:~(-N) =-(-N)- 1
对于0来说,0的反码为全1的二进制,值为-1
⑤:~0 = -0 - 1
反码加1后取得补码越界,截掉高位1后得到的补码仍然是0,所以0的原码和补码相同,只是反码不同
由②④⑤可知对于任意整数X
~X = -X - 1