gpt4 book ai didi

c - 仅使用 C 中的按位运算符向右循环 n

转载 作者:行者123 更新时间:2023-12-02 06:35:01 26 4
gpt4 key购买 nike

我试图通过仅使用按位运算符在 C 中实现 rotateRight by n 函数。

到目前为止,我已经决定使用它。

y = x >> n
z = x << (32 - n)

g = y | z

所以以值 11010011 为例

如果我尝试 `rotateRight(5):

y 变为 11111110

z 变为 01100000

那么g就变成了111111110

但是正确答案应该是10011110

这几乎行得通,但问题是当我需要它来执行逻辑移位时,右移会复制符号位,因此我的一些答案是否定的。我该如何解决这个问题?

注意我无法使用转换无符号类型

最佳答案

你可以移动无符号值:

y = (int)((unsigned)x >> n);
z = x << (32 - n);
g = y | z;

或者,您可以适本地屏蔽:

y = (x >> n) & ~(-1 << (32 - n));
z = x << (32 - n);
g = y | z;

关于c - 仅使用 C 中的按位运算符向右循环 n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21895604/

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