【发布时间】:2021-04-10 00:01:35
【问题描述】:
假设我有一个取两个整数 A,B 的 fn
设A的二进制表示为a0,a1,a2....an,B的二进制表示为b0,b1,b2...bn。
我希望返回这个 ((a0 * b0) ^ (a1 * b1) ^ ..... ^ (an * bn))。
但挑战是在没有位转换的情况下实现这一点,即使用整数。我怎样才能做到这一点?
PS:我知道 A & B 给了我一个数字。当这个数字被转换为二进制并且它的元素相互异或时,我会得到我的答案。但我不希望使用 bin() 将 anded 结果转换为二进制以加快计算速度。
def find( int A,int B):
multiply= A & B
list= bin(multiply)[2:] #(this step I wish to avoid cuz the product can be super large and the binary string is long)
list = [int(d) for d in list]
innerprod = (reduce(lambda i, j: int(i) ^ int(j), list))
return innerprod
【问题讨论】:
-
显示你当前的实现。我不清楚您在做什么,也不清楚您是否了解
^运算符的工作原理。 -
注明。我添加了我的代码。
-
这不是python代码...
标签: python-3.x logic bit-manipulation bitwise-operators bit