if(e & 1) 在 python 中意味着什么?
What is if(e & 1) means in python?
所以我在 SO 上阅读了一个问题,但我不明白它的答案的代码。它正在做一些明智的操作,但我不知道它是如何工作的以及 while 循环中实际发生了什么以及 mod 在 b2 = (b2*b2) % m
的需要
b2 = b
res = 1
while e:
if e & 1:
res = (res * b2) % m
b2 = (b2*b2) % m
e >>= 1
谁能帮我理解一下?
这是一个按位与操作。在按位二进制运算中,二进制形式的两个数字由其对应的位处理。所以 1 只是一位。它将与数字的最后一位进行比较。因此,如果 1 的最后一位为 1,则 a&1 将为 return 1,否则为零。所以 if 块将相应地执行
例如
12 和 1
1 1 0 0
0 0 0 1
_________
0 0 0 0
所以我在 SO 上阅读了一个问题,但我不明白它的答案的代码。它正在做一些明智的操作,但我不知道它是如何工作的以及 while 循环中实际发生了什么以及 mod 在 b2 = (b2*b2) % m
b2 = b
res = 1
while e:
if e & 1:
res = (res * b2) % m
b2 = (b2*b2) % m
e >>= 1
谁能帮我理解一下?
这是一个按位与操作。在按位二进制运算中,二进制形式的两个数字由其对应的位处理。所以 1 只是一位。它将与数字的最后一位进行比较。因此,如果 1 的最后一位为 1,则 a&1 将为 return 1,否则为零。所以 if 块将相应地执行
例如
12 和 1
1 1 0 0
0 0 0 1
_________
0 0 0 0