2011-04-10 124 views
0

我用于反转的unsigned int s的比特顺序检出的SWAR算法(小号 IMD W¯¯ ithin ř egister)。 signed int有类似的东西吗?签名INT转换 - > LSB和++ LSB-> MSB用C

+0

我真诚地希望这不意味着拼写SWAP。标志并不重要。 – 2011-04-10 20:03:18

+0

非常感谢。是的,我不是故意拼写SWAP :) – Doug 2011-04-10 20:08:50

+0

是'SWAR'就像'寄存器内的SIMD'一样吗? – 2011-04-10 20:31:33

回答

0

这取决于你的意思是颠倒有符号整数的位。但是,一般来说,如果您计划将符号位置于LSB位置,并将符号位置于符号位(这是交换任何东西的正常方式),那么对于有符号整数和无符号整数都可以使用相同的算法。

如果不是这种情况,请通过反转有符号整数来解释您的意思。

1

该算法仅适用于无符号整数,因为在位移时不需要符号扩展。由于该算法只使用二进制表示,而不是数值,因此您可以将其转换为大小相等的无符号整数(它将具有相同的表示形式),使用该算法并将其转换回有符号。这些转换不会变成任何汇编指令,它们只是使编译器产生逻辑右移而不是算术右移。