0
32ビットの符号なし整数を逆にしようとしています。ゼロを1に、1を0にしたいのですが、何か問題があるようです。32ビットの符号なしintビットの数字を反転する
入力:3
出力:4294967292
予想される出力:2147483648
int main() {
unsigned int n;
scanf("%u",&n);
n^=4294967295;
printf("%u",n);
return 0;
}
あなたはどのような出力を得るのですか、あなたはどのような出力を期待していますか? –
"何か間違っているようです" - 正確には何ですか?あなたの入力は何ですか?実際の出力と期待される出力は何ですか? (あなたのコードが動作するかどうかを見るために、 'n'をxoringする前後にバイナリ表現を出力することができます)。 –
' 2147483648(0x80000000) 'はなぜ期待しますか?正しい出力は '4294967292(0xfffffffc)'です。あなたの期待は間違っています。 –