小编use*_*687的帖子

如何有效地将两个16位字组合成一个32位字?

我必须将两个16位字组合成一个32位字数百次,这需要很多计算能力.我想找到一种更有效的方法来做到这一点.

我有2个16位字,名为A和B.我想要一个名为C的32位字.A中的位应复制到C中的偶数位.B中的位应复制到奇数位中. C.例如:A:0b0000000000000000 B:0b1111111111111111处理后的C应为0b10101010101010101010101010101010.

我目前的解决方案如下:

for (i = 0; i < 32; i+=2)
{
    C |=  (A & (1 << (i/2))) << (i/2);
    C |=  (B & (1 << (i/2))) << (i/2 + 1);
}
Run Code Online (Sandbox Code Playgroud)

当我有几百个C要处理时,这个解决方案需要花费太多时间.我正在寻找一个更好的!

补充:该程序在TriCore上运行.我别无选择,只能以这种方式处理数据,因为AB和C之间的这种关系是由协议定义的.

谢谢!

c embedded performance bitwise-operators

5
推荐指数
2
解决办法
1456
查看次数

标签 统计

bitwise-operators ×1

c ×1

embedded ×1

performance ×1