python中的原码反码和补码

python中的原码反码和补码,第1张

更详细的介绍可参考 这篇文章

如下以8位二进制为例:

特殊地数字在计算机中用二进制补码形式表示,补码10000000表示的不是 -0,而是-128

一般来讲,整形数在内存中是以 补码 的形式存放的,输出的时候同样也是按照 补码 输出的。

但是在 Python 中,情况是这样的:

所以为了获得十进制负数的补码,我们需要手动将其和 0xffffffff 进行与 *** 作,得到一个十六进制数,再交给 bin() 转化,这时内存中得到的才是你想要的补码。

原码原码是二进制数字的一种简单的表示法。二进制首位为符号位,1代表负,0代表正。

反码反码可由原码得到。如果是正数,反码与原码相同;如果是负数,反码是其原码(符号位除外)各位取反而得到的。

补码:补码可由原码得到。如果是正数,补码与原码相同;如果是负数,补码是对其原码(除符号位外)各位取反,并在末位加1而得到的(有进位则进位,但不改变符号位)。

python有按位取反的 *** 作符:~   但是对负整数要小心 *** 作,因为在计算机系统中,数值一律用补码来表示和存储的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11539557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存