C преобразование int в оператор бит-смещения - PullRequest
0 голосов
/ 31 августа 2011

Я могу использовать только эти символы:

! ~ & ^ | + << >>

Вот таблица, которую мне нужно достичь:

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

С выходом я собираюсь сдвинуть влево 32-битное целое число.

Ex.

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

  //OUTPUT = 0xFFFF0000
}

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

любые идеи ????

1 Ответ

7 голосов
/ 31 августа 2011

Ну, если вам нужна функция с f(0) = 0, f(1) = 8, f(3) = 24 и т. Д., Вам придется реализовать f(x) = x * 8. Поскольку 8 - идеальная степень двух, умножение можно заменить на сдвиг. Таким образом:

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

Вот и все.

...