2011-08-31 51 views
-1

我只能使用這些符號:C將int轉換爲位移運算符

! 〜&^| + < < >>

這是我需要實現表:

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

隨着輸出我要左移32位的int過來。

Ex。

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

    //OUTPUT = 0xFFFF0000 
} 

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

任何想法????

+0

這功課嗎? –

+0

家庭作業或面試問題?另外,不確定輸入如何與ascii示例中的輸出一致。輸入變量還是固定在1或其他東西? –

+1

輸入變量是隨機的{0,1,2,3},並基於該數字,我需要將其轉換爲表格中的相應值,並返回該數字左移數字。 – Muru

回答

7

那麼,如果你想要一個功能f(0) = 0,f(1) = 8,f(3) = 24等,那麼你將不得不實施f(x) = x * 8。由於8是兩個完美的力量,所以可以用移位來代替乘法。因此:

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

就這樣。

+0

謝謝!我混淆了移動位值和移動數字。非常感謝。 – Muru