按位';或';成为'+=';在python的字节码中
我正在阅读下面对python字节码的解释。为了提供完整的上下文,我发布了很多文章。我对按位'or'变成'+='的部分感到困惑 当解释器执行EXTENDED_ARG时,其oparg(为1)为 左移位8位并存储在临时变量中。让我们 将其称为extended_arg(不要将其与opname extended_arg混淆): 这类似于将oparg的值添加到extended_arg。所以现在我们 拥有: 该值将用作CALL_函数的实际运算量。所以 其实, 被解释为:按位';或';成为'+=';在python的字节码中,python,bytecode,bitwise-or,Python,Bytecode,Bitwise Or,我正在阅读下面对python字节码的解释。为了提供完整的上下文,我发布了很多文章。我对按位'or'变成'+='的部分感到困惑 当解释器执行EXTENDED_ARG时,其oparg(为1)为 左移位8位并存储在临时变量中。让我们 将其称为extended_arg(不要将其与opname extended_arg混淆): 这类似于将oparg的值添加到extended_arg。所以现在我们 拥有: 该值将用作CALL_函数的实际运算量。所以 其实, 被解释为: EXTENDED_ARG 1 CALL
EXTENDED_ARG 1
CALL_FUNCTION 260
有人能解释一下这是怎么翻译的吗。如果
x
和y
没有共享任何设置位,那么x | y
就相当于x+y
如果x
和y
没有共享任何设置位,那么x | y
就相当于x+y
- 第1步:
1
- 步骤1:
1如果已知其中一个操作数为零,则0+bit=bit
给出与0 | bit==bit
相同的结果,其中bit
为0
或1
如果已知其中一个操作数为零,然后0+bit=bit
给出与0 | bit==bit
相同的结果,其中bit
是0
或1
共享一个设定位意味着什么?@Joemoor94x@JoeyMoore:将数字的二进制表示形式(填充到相同的长度)排成一行,并查找其中都有1的任何列。二进制表示法中的1是设定位。@布鲁诺我认为这突出了我的一个更深层次的无知共享一个设定位意味着什么?@Joemoor94x@JoeyMoore:将数字的二进制表示法(填充到相同的长度)排成一行,然后查找两个数字都有1的任何列。二进制表示法中的1是设定位。@布鲁诺我认为这突出了我对零件更深层次的无知。当前条件中的警告+与|相同,而不是+=与|=当前条件中的警告+与|相同,而不是+=与|相同|=
extened_arg = 1 << 8 # same as 1 * 256
extened_arg = extened_arg | 4
# Same as extened_arg += 4
extened_arg = 256 + 4 = 260
EXTENDED_ARG 1
CALL_FUNCTION 4
EXTENDED_ARG 1
CALL_FUNCTION 260