2011-03-16 58 views
2

我正在做一個C作業項目,並且令人難以置信地丟失了。基本上,我必須做出這樣的功能,稱爲大部分,它採用3個短整數,並根據輸入吐出另一個數字。我會從項目舉個例子:在公民投票中使用C位操作符 - 家庭作業

基本上,我做的函數majority(101010101010101, 101010101010101, 101010101010101),如果有2名或以上1在該位,則返回1,否則返回0。

到目前爲止,我有

short majority(short a, short b, short c) 
{ 
    return (a | b | c); 
} 

現在,我知道這是不對的在所有,所以我在這裏問:我怎麼會去這樣做呢?感謝您的幫助,我很抱歉,如果這是有點難以遵循。我可以根據需要進行編輯。

回答

2

如果我正確理解你,你想在結果整數中設置一個位,當且僅當相應位設置爲兩個或三個輸入整數。

...因此,如果該位被設置在第一個數字中並且相應的位被設置在最後兩個數字中的任何一箇中,或者對應的位被設置在最後兩個數字中,那麼在按位表達式:

result = (a & (b | c)) | (b & c); 
7

有這樣做的不止一種方法,但一種可能性是:

short majority(short a, short b, short c) 
{ 
    return (a & b) | (b & c) | (c & a); 
} 

由於這是家庭作業,我會讓你自己如何/爲什麼這個工程的工作,看看你能來或許更好的解決方案...

+0

這也適用於我!非常感謝你! – 2011-03-18 15:04:01