2011-01-10 10 views
-1
int main() 
{ 
    signed int bit=512, mBit; 
    { 
     mBit = ~bit; 
     bit = bit & ~bit ; 
     printf("%d %d", bit, mBit); 
    } 
    return 0; 
} 

a。 0, b。 0,513
c。 512, d。 0、-513C宿題のための出力

男私はこの質問の答えを持っていないし、質問を解釈することもできません。あなたは適切な説明であなたの答えを提供してください。

+1

にも質問がありません! – ltjax

+5

彼は4つの多肢選択式のオプションから出力がどのようになるか知りたいと思うと思う。なぜそれを試してみませんか? – Rup

+1

この質問は、プログラムが印刷する内容を尋ねます。あなたの解釈があります。今あなたはそれを解決しようとすることができます! –

答えて

5

正解をd:bit & ~bitが常にゼロ(1000000000 & 0111111111)をもたらすためhttp://ideone.com/frKOz

  • ビットが0です。
  • mbitは-513です。なぜなら、512の反転は-513です。

編集:なぜmbit -513ですか?

は、符号付き整数の取り扱いの説明を参照してください:http://www.rwc.uc.edu/koehler/comath/13.html

+0

+1です。 –

+0

mbitは-513です。512を反転すると-513です。あなたの言うことを詳しく説明してください。 – Algorithmist

+0

これは、512のブール値/バイナリが[2の補数(Wikipedia)]になるのです(http://en.wikipedia.org/wiki/ 2%27s_complement)表現です。 – Rup