如下以8位二进制为例:
特殊地数字在计算机中用二进制补码形式表示,补码10000000表示的不是 -0,而是-128
一般来讲,整形数在内存中是以 补码 的形式存放的,输出的时候同样也是按照 补码 输出的。
但是在 Python 中,情况是这样的:
所以为了获得十进制负数的补码,我们需要手动将其和 0xffffffff 进行与 *** 作,得到一个十六进制数,再交给 bin() 转化,这时内存中得到的才是你想要的补码。
原码:原码是二进制数字的一种简单的表示法。二进制首位为符号位,1代表负,0代表正。
反码:反码可由原码得到。如果是正数,反码与原码相同;如果是负数,反码是其原码(符号位除外)各位取反而得到的。
补码:补码可由原码得到。如果是正数,补码与原码相同;如果是负数,补码是对其原码(除符号位外)各位取反,并在末位加1而得到的(有进位则进位,但不改变符号位)。
python有按位取反的 *** 作符:~ 但是对负整数要小心 *** 作,因为在计算机系统中,数值一律用补码来表示和存储的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)