Python 我们如何得到这个逐位运算的答案?
我知道如何得到答案,但“或”部分后的最后一部分Python 我们如何得到这个逐位运算的答案?,python,Python,我知道如何得到答案,但“或”部分后的最后一部分令人困惑 print((0b1101&~1)|(033>>0x2)) 我知道如何得到答案,但最后一部分在“或”部分之后| 这令人困惑 print((0b1101&~1)|(033>>0x2)) 此语句:(033>>0x2) 正在取十进制数为27的八进制数033,然后将其右移2。这其中的哪一部分让您感到困惑?欢迎使用堆栈溢出。不幸的是,你的问题不清楚。你是在问>做什么?或者数字上的0x前缀是什么意思?请尽可能
令人困惑
print((0b1101&~1)|(033>>0x2))
我知道如何得到答案,但最后一部分在“或”部分之后|
这令人困惑
print((0b1101&~1)|(033>>0x2))
此语句:(033>>0x2)
正在取十进制数为27的八进制数
033
,然后将其右移2。这其中的哪一部分让您感到困惑?欢迎使用堆栈溢出。不幸的是,你的问题不清楚。你是在问>
做什么?或者数字上的0x
前缀是什么意思?请尽可能清楚。如果我们不理解你的问题,我们就帮不了你。请看。当我运行这段代码时,我得到了一个SyntaxError
。@Chris:这是否意味着python 2中的033
被认为是八进制?@quamrana,还有。是的,但我在我的计算器中得到的最终答案是15,而在python 2中它是14,我已经在论文中对此进行了研究,我仍然得到了15:(0b1101&~1==0b1101&0b1110==0b1100==0xC==12
,就像我在我的回答中说的那样,033>>0x2==27>>2==27/4==6
现在我们有了12 | 6==0b1100 | 0b0110==0xE==14
亲爱的先生,如果你不介意的话,为什么否定1的二进制值是1110呢? 匹配左侧操作数,在本例中,位长度为4,因此~0b0001==0b1110
,但如果左侧操作数的位长度为5,则它将为~0b00001==0b11110
,依此类推