小编sao*_*lof的帖子

对于给定月份的天数,是否有一个简单的(可能是混淆的)数学表达式?

用于标准库不可用的情况。假设月份是一个无符号整数。

我很想看到给出正确答案的最短算术表达式,允许或禁止按位运算符和掩码,但不允许查找表。部分表达式可以保存到变量中以提高可读性以展示所使用的想法。

assembly date micro-optimization

1
推荐指数
1
解决办法
120
查看次数

现代 x86 处理器上的补码绝对值运算的最佳位旋转

计算二进制补码绝对值的最快方法是一种足够常见的操作,优化的实现已广泛使用。那么让我们考虑另一种情况。如果我们想使用 x86 汇编获取补码的绝对值怎么办?

我拥有的一个快速但可能不是最理想的无分支实现是通过与 10000.... 掩码和移位来获取符号位,将其与 11111... 掩码相乘,然后将其与原始数字进行异或。但有更好的方法吗?

出现这种情况的一个应用是格雷解码的最佳实现。64 位整数的格雷解码的常见实现使用六个异或运算和六个位移位。然而,数字与......1111110 的无进位乘法将给出格雷解码或其按位求反,并取其补码abs 值给出格雷解码。只要可以进行微优化,它就应该比最普遍的方法更快。出于该问题的目的,起始状态可以假定为任何标准 C 调用约定或 CLMUL 操作之后(采用非进位输出)。

x86 assembly bit-manipulation ones-complement gray-code

1
推荐指数
1
解决办法
114
查看次数