- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有两个二进制整数,x0
和 x1
,它们都是 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/
需要帮助将这些给定的数字打印成星号,但我是编程新手;我该怎么做? #include int main(void) { int a[5]={20,1,5,15,12}; int i=0
使用 Delphi XE 2 我试图确定缩放方向以将缩放效果应用于图像(TImage),但没有找到执行此操作的函数,并且图像的 OnGesture 事件中的 EventInfo 属性没有此信息. 我见
我不知道制服在内存中是如何表示的。 制服似乎会占用宝贵的寄存器空间,但它们最终会传入/通过/传出到全局内存中,对吗? 制服不用时情况会发生变化吗?编译器可以将它们优化掉吗?--在这种情况下,我已经将无
我正在尝试在名为“timeclock”的模型上记录“time_in”和“time_out”记录。这是我想做但无法开始工作的事情! 检查最后一个时钟条目,看看它是否同时填充了“time_in”和“tim
我想听听您如何解决这种编程任务!?每种类型(OPER = 1 类型)对应一种特定的信息。 这只是大约 10 个具有相同结构的规范之一。首选创建这些“转换器”(协议(protocol))的通用方法。 最
我正在使用 Rest API(NodeJS、Express)和 PostgreSQL 制作 React-Native 应用。 在我的本地机器上托管时一切正常。当 API 托管在我的机器上并且 Post
我是一名优秀的程序员,十分优秀!