我想知道在python中逐位比较2个数字(16位)最有效的方法是什么?比较的顺序并不重要
在伪代码中,我需要如下内容:
IF NUMBER1_BIT1 != NUMBER2_BIT1 THEN do something
IF NUMBER1_BIT2 != NUMBER2_BIT2 THEN do something
IF NUMBER1_BIT3 != NUMBER2_BIT3 THEN do something
…..
IF NUMBER1_BIT16 != NUMBER2_BIT16 THEN do something
我的程序的这一部分将被大量执行,因此我希望尽可能提高python的效率
听起来像是在创建一个位掩码。这在C语言中是很常见的,它使用32位数字,每一位都由一个常量表示
这种方法最酷的一点是,如果在输入中设置了位,掩码将只产生一些输出,否则输出将为0
无论如何,这不是C;这是python,因此我们可以使用^{} 方法将每个数字转换为二进制字符串,然后比较字符串中的每个字符
编辑
在python3中,我们可以使用^{} 创建二进制数:
您可以使用助手函数将其转换为switch语句:
您可以这样使用:
为了提高效率,您可以在switch函数中用}{}{}。。。在这一点上,napuzba的解决方案会更好,因为它以更少的函数调用开销完成同样的事情
v & b
替换v & (1<<b)
,并在case(..)
调用中使用2的预计算幂:case(1):
{您可以使用
xor
和and
运算符:相关问题 更多 >
编程相关推荐