gpt4 book ai didi

python - 如何将两个二进制数合并为一个三进制数

转载 作者:太空狗 更新时间:2023-10-30 01:18:19 24 4
gpt4 key购买 nike

我有两个二进制整数,x0x1,它们都是 8 位(因此它们的范围从 0 到 255)。对于这些数字,此陈述始终为真:x0 & x1 == 0。这是一个例子:

bx0 = 100 # represented as 01100100 in binary
bx1 = 129 # represented as 10000001 in binary

所以我需要对这些数字进行如下操作。首先,将这些二进制表示解释为 ternary (base-3) 数字,如下所示:

tx0 = ternary(bx0) # becomes  981 represented as 01100100 in ternary
tx1 = ternary(bx1) # becomes 2188 represented as 10000001 in ternary

然后,将tx1的三元表示中的1全部交换为2:

tx1_swap = swap(tx1) # becomes 4376, represented as 20000002 in ternary

然后对它们使用 OR 的三元版本得到最终的组合数:

result = ternary_or(tx0, tx1_swap) # becomes 5357, represented as 21100102 in ternary

我不需要在任何时候保存三元表示,我只需要结果,例如 result=5357。当然,我可以通过将数字转换为二进制、转换为三进制等来对此进行编码。但我需要此操作快速,因为我在代码中多次执行此操作。在 python 中实现这个的快速方法是什么?

最佳答案

最快的方法可能是使用小数加法:

a = 1100100
b = 10000001
result = int(str(a+2*b),3) #5357

你不会在 python(或我所知道的任何其他语言)中找到三元运算符。因为你需要超越按位运算,你的下一个最快的选择是整数加法,地球上的每台计算机都经过优化完成。

转换为三元以完成此操作的其他解决方案将要求您来回转换为字符串,这比十进制加法花费的时间长得多。这只需要在最后转换一个字符串,假设您甚至需要最终三元数的十进制版本。

关于python - 如何将两个二进制数合并为一个三进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53196809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com