gpt4 book ai didi

bit-manipulation - 如何旋转一个字中的位

转载 作者:行者123 更新时间:2023-12-02 07:50:17 25 4
gpt4 key购买 nike

我正在使用 dsPIC33F 和 GCC。我想将单词中的位向左或向右旋转一次,如下所示:

       MSB             LSB
input: 0101 1101 0101 1101
right: 1010 1110 1010 1110
left : 1011 1010 1011 1010

(如果不清楚,LSB 移动到 MSB 的位置进行右旋转,反之亦然。)

我的处理器已经有循环右转(rrnc、rrc)和循环左转指令(rlnc、rlc),所以我希望编译器能优化它。如果没有,我可能不得不使用内联汇编。

最佳答案

您可以将它们写成常规移位的明显组合:

x rol N == x << N | x >> width-N
x ror N == x >> N | x << width-N

其中 width 是您旋转的位数。

智能编译器可能(我认为会)检测到这种组合并编译为旋转指令。

请注意它适用于无符号且宽度等于您正在处理的机器字中的位数(对于 dsPIC 上的无符号整数为 16)。

关于bit-manipulation - 如何旋转一个字中的位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4207546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com