【发布时间】:2010-10-13 22:45:36
【问题描述】:
将一个整数 2 传递给该函数,然后返回一个整数 4
x = 2;
x = rotateInt('L', x, 1);
(左移1位)
示例: 00000010 -> 向左旋转 1 -> 00000100
但如果我通过了:
x = rotateInt('R', x, 3);
它将返回 64, 01000000
这是代码,谁能纠正错误...谢谢
int rotateInt(char direction, unsigned int x, int y)
{
unsigned int mask = 0;
int num = 0, result = 0;
int i;
for (i = 0; i < y; i++)
{
if (direction == 'R')
{
if ((x & 1) == 1)
x = (x ^ 129);
else
x = x >> 1;
}
else if (direction == 'L')
{
if ((x & 128) == 1)
x = (x ^ 129);
else
x = x << 1;
}
}
result = (result ^ x);
return result;
}
【问题讨论】:
-
考虑>>和
-
你的问题是?你想知道按位运算吗? en.wikipedia.org/wiki/…
-
你真的需要学会缩进你的代码。它使您的代码更具可读性。此外,您会工作得更快,犯的错误更少。