运算符取反(~)过程:
前置知识:
计算机中:补码表示正负数
计算机中:并不存在原码反码
反码:零和正数的反码是自身;负数的反码,除符号位外,其他各位求反;
补码:零和正数的补码是自身;负数的补码,符号位不变,最低位加1
问题1:~0 = -1
0:
原码:00000000 反码:00000000 补码:00000000
方式一:~0:
补码:11111111 反码:11111110 原码:10000001 (-1)
方式二:~0: 256表示 8 位一共可以表示256个数
补码:11111111(255) 255-256 = -1
问题2:~1 = -2
1:
原码:00000001 反码:00000001 补码:00000001
方式一:~1:
补码:11111110 反码:11111101 原码:10000010 (-2)
方式二:~1: 256表示 8 位一共可以表示256个数
补码:11111110(254) 254-256 = -2