Python中按位取反运算符(~)在计算机中的计算过程

1. 原码、反码、补码三者之间的关系

计算机中的数值是以二进制码的方式存储的,而且是以补码的方式存储的,数值的运算也是以补码的形式进行运算。我们通常看到的数值一般是十进制数,可以简单地理解为计算机将补码转换成原码,然后再将原码转换成十进制显示出来。

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。

        正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反

        正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

正数:[+1] = [00000001]原 = [00000001]反 = [00000001]补

负数:

[-1]原 = 10000001

[-1]反 = 11111110

[-1]补 = 11111111

2. Python中按位取反(~)运算符的计算过程

计算机中的数值是以补码存储的

① Python中对正数按位取反:~1 = -2

[+1]原 = [+1]反 = [+1]补 = 0 0001

计算机中存储的时 0 0001,是正数1

按位取反:1 1110

1 1110的反码: [1 1110]反 = [1 0001]

末位加一:1 0010,即为-2

 

② Python中对负数按位取反:~-2 = 1

[-2]原 = 1 0010

[-2]反 = 1 1101

[-2]补 = 1 1110

计算机中存储的是 1 1110,是负数 -14

按位取反:0 0001

正数的反码和补码相同,即为1

总结,简单的记忆方法:~a = - (a + 1)

 

 

你可能感兴趣的:(Python)