C将int转换为bitshift运算符

时间:2011-08-31 15:19:45

标签: c logic bit-manipulation

我只能使用这些符号:

! 〜& ^ | +<< >>

这是我需要实现的表格:

input | output
--------------
0     |   0
1     |   8
2     |   16
3     |   24

随着输出我将左移32位int。

实施例

int main()
{
   int myInt = 0xFFFFFFFF;
   myInt = (x << (myFunction(2)));

  //OUTPUT = 0xFFFF0000
}

int myFunction(int input)
{ 
   // Do some magic conversions here
}

任何想法????

1 个答案:

答案 0 :(得分:7)

好吧,如果你想要一个包含f(0) = 0f(1) = 8f(3) = 24等功能,那么你必须实现f(x) = x * 8。由于8是2的完美幂,乘法可以通过移位来代替。因此:

int myFunction(int input)
{
    return input << 3;
}

就是这样。