看下面的函数,其中a是一个无符号字节 0-255,b是一个浮点数:
def convert(a, b):
if a & 0x80:
return -b
return b
b如果第一个位被设置,它会否定a,但如果不是,则什么都不做。人们可能会认为这不是那么酷,因为条件语句破坏了 CPU 中的分支预测。因此,人们会尝试将其转换为计算。
但我只找到了这个解决方案,看起来效率不高:
def convert(a, b):
return (-1)**(a & 0x80) * b
哪个效率更高?编译器是否简化了第二个?有没有更好的办法?
陪伴而非守候
www说
相关分类