我必须将两个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之间的这种关系是由协议定义的.
谢谢!