python按位或怎么按_在Python中按位操作如何工作?

我今天一直在学习按位运算,我知道不是(~)反转所有位,例如:01010

to

10101

这意味着~10应该是-5,但是我看到它是-11(根据python命令行),即01010

to

11011

只有两个位子被颠倒了。有人能解释为什么不是10101吗?

编辑:在看了我的计算器之后,我对它有了一点更好的理解,但是我自己用来确定二进制和整数的代码仍然很混乱。输入(字节模式)11110101给出-11,但输入代码给出-117:def binaryToInt(biNum, bUnsigned = False):

iNum = 0

bSign = int(biNum[0]) if not (bUnsigned or biNum[-1] == "u") else 0

biNum = biNum[(1 if not (bUnsigned or biNum[-1] == "u") else 0):(len(biNum) if biNum[-1] != "u" else -1)]

for i in xrange(len(biNum)):

iNum += int(biNum[i]) * 2**(len(biNum) - 1 - i)

return (iNum if not bSign else -iNum)

def intToBinary(iNum, bUnsigned = False):

bSign = "1" if iNum < 0 else "0"

iLoopNum = int((iNum ** 2) ** 0.5) #make positive!

biNum = ""

while iLoopNum:

biNum += str(iLoopNum%2)

iLoopNum /= 2

return bSign + biNum[::-1] if not bUnsigned else biNum[::-1] + "u"

你们能解释一下吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值