【发布时间】:2013-09-10 18:02:37
【问题描述】:
我有一个关于使用 128 位寄存器来提高代码速度的问题。考虑以下 C/C++ 代码:我定义了两个 unsigned long long ints a 和 b,并给它们一些值。
unsigned long long int a = 4368, b = 56480;
然后,我要计算
a & b;
这里a在计算机中表示为一个64位数字4369 = 100010001001,b = 56481 = 1101110010100001也一样,我计算a & b,它仍然是一个64位数字,由bit-by给出-a 和 b 之间的位逻辑与:
a & b = 1000000000001
我的问题如下:计算机是否有一个 128 位寄存器,我可以在其中执行上述操作,但使用 128 位整数而不是 64 位整数,并且具有相同的计算机时间?更清楚一点:我想通过使用 128 位数字而不是 64 位数字在我的代码中获得两倍的速度,例如。 G。我想用相同的计算机时间计算 128 个 AND 而不是 64 个 AND(每个位一个 AND)。如果这是可能的,你有一个代码示例吗?我听说 SSE 注册商可能会这样做,但我不确定。
【问题讨论】:
标签: c bit-manipulation sse logical-operators