我正在尝试提出一个向右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)
但是,我被禁止使用任何强制转换,并且允许的操作是~ & ^ | + <<和>>。谁能帮我解决这个问题?