【问题标题】:What is if(e & 1) means in python? [duplicate]if(e & 1) 在python中是什么意思? [复制]
【发布时间】:2019-08-21 21:03:33
【问题描述】:

所以我正在阅读关于 SO 的问题,但我不明白它的答案代码。它正在做一些明智的操作,但我不知道它是如何工作的,以及在 while 循环中实际发生的事情以及 b2 = (b2*b2) % m 的 mod 的需要@

        b2 = b                         
        res = 1                        
         while e:                       
            if e & 1:                  
                res = (res * b2) % m   
            b2 = (b2*b2) % m        
            e >>= 1

谁能帮我理解它?

This is the question

【问题讨论】:

  • 你自己猜到它能做什么?
  • 我认为这是位明智的操作,但我不确定,我不知道它是如何工作的
  • 你如何打开一个交互式 Python sessionl,测试一些值并查看结果?
  • 我做了,但我想知道 while e 循环中实际发生了什么
  • 您的问题中没有while。不,链接的不算数。

标签: bitwise-and


【解决方案1】:

这是一个按位与运算。在按位二进制运算中,二进制形式的两个数字由它们对应的位处理。所以 1 只是一位。它将与数字的最后一位进行比较。因此,如果 1 的最后一位为 1,则 a&1 将返回 1,否则返回 0。所以 if 块将被相应地执行 例如 12 和 1
1 1 0 0
0 0 0 1
_________
0 0 0 0

【讨论】:

  • 二进制形式的两个数字由它们对应的位处理是什么意思?任何为什么它两次制作 m 的 mod ?
  • 我的意思是把数字写成二进制形式,一个在另一个之下(与我们写两个数字相加的方式相同),这样它们的最后一位匹配。因此,然后对每对位执行 AND。所以对于 1101 AND 1 你会写 1101 AND 0001 。它给出 0001。这样
猜你喜欢
  • 2013-01-03
  • 2020-05-10
  • 2020-04-11
  • 2017-08-28
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
相关资源
最近更新 更多