在C ++中签名的INT转换MSB - > LSB和LSB-> MSB

时间:2011-04-10 20:00:59

标签: c++

我检查了SWAR算法( S IMD W ithin A R egister)以反转位顺序unsigned int的。{ signed int是否有类似内容?

2 个答案:

答案 0 :(得分:1)

该算法仅适用于无符号整数,因为不需要在位移期间进行符号扩展。

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

答案 1 :(得分:0)

这取决于你反转有符号整数的位是什么意思。但是,通常,如果您计划将符号位置于LSB位置并将LSB置于符号位(这是交换任何内容的正常方式),则可以将相同的算法用于有符号和无符号整数。

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