if(e&1)在python中是什么意思?

时间:2019-03-31 15:38:25

标签: bitwise-and

因此,我正在阅读有关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

1 个答案:

答案 0 :(得分:1)

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