python字符串反码输出_python中反码和补码的计算

更新时间:2023-06-24 17:23:35 阅读: 评论:0

python字符串反码输出_python中反码和补码的计算
听歌的心情python虽然是在某种程度上脱离了底层硬件的⾼级语⾔,它还是可以对数值的⼆进制机器码表⽰进⾏各种运算和操作。本⽂介绍如何计算反码和补码。
⾸先,我们介绍⼀下反码和补码的知识:反码,就是各位取反,很简单!补码,就是在反码的基础上加1得到。
计算机存储有符号的数,采⽤的就是补码!
正数的补码就是它本⾝,负数的补码,就是其绝对值的反码加1。符号位是最⾼bit位,0为正数,1为负数。在C语⾔中,我们使⽤singed 和unsinged来表⽰此数据是否有符号,这个关键词决定了此数据在计算机中的存储表⽰⽅式。
python跟C语⾔在计算反码的时候,⼀样都是使⽤~符号。不过,python有它⾃⼰的细节需要注意。
>>> ~6
-7
6取反后得到-7,这是怎么回事?我们需要通过查看⼆进制码来分析:
>>> bin(6)
'0b110'
>>> bin(-7)韩束护肤品
'-0b111'
bin函数看起来不够给⼒,对于-7,它的输出其实就是7的⼆进制码,前⾯再带⼀个符号。这跟我们⼈类的直观感受⼀样,这也是python的特点。因此,我们需要换⼀种⽅式,来查看6和-7的⼆进制码,是否真的就是取反的关系:
>>> bin((6).to_bytes(1, 'big', signed=True)[0])
'0b110'
>>> bin((-7).to_bytes(1, 'big', signed=True)[0])
'0b11111001'
真的是取反(to_bytes函数请参考:int与bytes的相互转换)!bin函数输出的bytes对象,0b后⾯不会
有多余的0,这个要注意。我们把上⾯代码简化⼀下,并且使⽤~取反符号:
>>> (6).to_bytes(1, 'big', signed=True)
b'\x06'
>>> (~6).to_bytes(1, 'big', signed=True)
b'\xf9'
看16进制,可能更简单⼀点点。
以上证明,~符号在python中,就是直接取反。⽽补码,就是在取反的基础上,加1得到:
>>> (6).to_bytes(1, 'big', signed=True)
b'\x06'
>>> (~6+1).to_bytes(1, 'big', signed=True)
b'\xfa'
狗为什么会得细小
>>> 6 + ~6+1 == 0
True
6和-6的和是0,0x06和0xfa的和,不考虑溢出,结果也是0。
还有⼀种⽅式查看反码和补码的⼆进制表⽰,请看下⾯的代码:
自学考试本科
>>> bin(6)
'0b110'
>>> bin(~6 & 0xFF)
'0b11111001'
>>> bin(~6+1 & 0xFF)
'0b11111010'
巨蟹座专属头像& 在python中,按位进⾏与(AND)运算。在表达式中引⼊&,就强迫python解释器将负数按照补码的⽅式来进⾏计算,最后再使⽤bin 函数将结果的⼆进制显⽰出来。
python中的整数,不受底层硬件字节数的限制,⼀般情况int都是4个字节。我们⽤4个字节来总结以上各种计算:
>>> (6).to_bytes(4, 'big', signed=True)
甲沟炎怎么形成的b'\x00\x00\x00\x06'
>>> (~6).to_bytes(4, 'big', signed=True)
b'\xff\xff\xff\xf9'
>>> (~6+1).to_bytes(4, 'big', signed=True)
b'\xff\xff\xff\xfa'
>>>
>>> bin(6)
'0b110' # '0b00000000000000000000000000000110'
>>> bin(~6 & 0xFFFFFFFF)大龙虾怎么做
'0b11111111111111111111111111111001'
>>> bin(~6+1 & 0xFFFFFFFF)
我的一天英语
'0b11111111111111111111111111111010'
-- EOF --

本文发布于:2023-06-24 17:23:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1030243.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:补码   进制   函数   底层   取反   符号
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图