python中的进制转换与位运算

本文介绍了Python中的bin(), oct(), hex()函数用于转换进制,并重点讨论了负数在二进制表示中的特性。对于十进制负数,bin()会返回原码形式,而要获取补码需要通过与0xffffffff操作。同时,文章提到了位运算的基本操作,如按位与、按位或、按位异或和取反,以及左右移位。这些概念在进行位运算和进制转换时十分关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bin(),oct(),hex()返回二进制、八进制和十六进制的字符串,并且分别带有0b,0o,0x前缀

需要注意的是:
对于 bin(x)(x 为 十进制负数),输出的是它的原码的二进制表示加上一个负号
对于 bin(x)(x 为 十六进制负数),输出的是对应的二进制表示

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

a = bin(-3)
print(a)

a = bin(3)
print(a)

b = bin(-3 & 0xffffffff)
print(b)

c = bin(0xfffffffd)
print(c)

# 输出
# -0b11
# 0b11
# 0b11111111111111111111111111111101
# 0b11111111111111111111111111111101

参考链接:
https://leetcode.cn/problems/convert-integer-lcci/solution/yi-huo-jie-fa-python-3-c-by-z1m/

进行进制转换后,常常伴随位运算操作,位运算操作包含:

&按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
|按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
^按位异或
若参加运算的两个二进制位值相同则为0,否则为1
~取反
~是一元运算符,用来对一个二进制数按位取反,即将01,将1
<<左移
用来将一个数的各二进制位全部左移N位,右补0
\>>右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0

关于正负数的位运算的内容可以参考:
https://blog.csdn.net/weixin_44020969/article/details/103225825

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的贝塔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值