Python计算补码函数 python补位函数( 二 )


补码:用来做数据的存储运算,可以实现计算机底层的减法操作,因而提出(可以表达出一个数的正负) 。
也就是说默认计算机只会做加法,例:5+(-3) = 5 - 3 。
乘法除法是通过左移和右移来实现 。
正数高位补0 , 负数高位补1 。
正数:
原码 = 反码 = 补码
负数:
反码 = 原码取反(除高位)
补码 = 反码加1
反码 = 补码减1
原码 = 反码取反(除高位)
我们会发现,在取反前减1和在取反后加1的效果是一样的,这就和-2-1 = -(2+1)一个道理,所以会得出这样的规律:
原码 = 补码取反加1
补码 = 原码取反加1
一个数在计算机中的二进制表示形式, 叫做这个数的机器数 。机器数是带符号的 , 在计算机用一个数的最高位存放符号, 叫符号位正数为0, 负数为1 。
比如
正数1在计算机中的存储即为
0 00000000000000000000001
负数1 在计算机中的存储即为
1 00000000000000000000001
一个正数,转换为二进制位就是这个正数的原码 。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码 。
正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反 。
正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了) , 然后最低位加1 。
所以原码,反码,补码正数情况下是一致的,负数情况下是不一致的 。
计算机的运算过程实际就是补码相加的一个过程 。
比如-2 + 3
-2 的原码为
1 000000000000000000000000010
反码为:
1 111111111111111111111111101
补码为:
1 111111111111111111111111110
3的原码为
0 000000000000000000000000011
反码为:
0 000000000000000000000000011
补码为:
0 000000000000000000000000011
那么二者补码相加结果为
1 111111111111111111111111110
+
0 000000000000000000000000011
=
10 000000000000000000000000001(计算机存储为32位,故前面溢出的1被舍弃,高位为0)
0 000000000000000000000000001
结果为1
再比如-2 + 1
-2 的原码为
1 000000000000000000000000010
反码为:
1 111111111111111111111111101
补码为:
1 111111111111111111111111110
1的原码为
0 000000000000000000000000001
1的反码为:
0 000000000000000000000000001
1的补码为:
0 000000000000000000000000001
二者的补码相加结果为
1 111111111111111111111111110
+
0 000000000000000000000000001
=
1 111111111111111111111111111
得出的补码转化为原码, 最低位减一得到反码,然后除符号位外所有位取反,得到结果
1 000000000000000000000000001
结果为1
【Python计算补码函数 python补位函数】Python计算补码函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python补位函数、Python计算补码函数的信息别忘了在本站进行查找喔 。

推荐阅读