小编pau*_*pau的帖子

在c中使用位操作向右旋转

我正在尝试提出一个向右int rotateRight (int x, int n)旋转的函数。例如,xn

rotateRight(0x87654321,4) = 0x76543218
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

int rotateRight(int x, int n) {
  int mask = (((1 << n)-1)<<(32-n));
  int reserve = (int)((unsigned) (x&mask) >>(32-n));
  return (x << n) | reserve; 
}
Run Code Online (Sandbox Code Playgroud)

但是,我被禁止使用任何强制转换,并且允许的操作是~ & ^ | + <<>>。谁能帮我解决这个问题?

c bit-manipulation bit

4
推荐指数
1
解决办法
9783
查看次数

标签 统计

bit ×1

bit-manipulation ×1

c ×1