私はpic32mxコントローラとC32ツールスイートv2.02コンパイラとMPLAB-X IDE v 3.05を使用して作業しています。 long long変数でビット単位の操作を使用していますが、誤った結果が得られています。長いビットのビット操作エラー
int main()
{
long long data0, data1=0;
data0 = 489631651402;
data1 = data0 & 0x0FFFFFFFFFF;
printf("%llu\n%llu\n", data0, data1);
return 0;
}
OUTPUT:
489631651402
492260348528
計算によれば、この結果は誤りです。 data0とdata1は等しくなければなりません。
この操作を改善する方法を教えてください。上記の手順でエラーが発生した場合は、正しい経路を提案してください。
生成されたアセンブリコードを確認しましたか? –
それで、あなたがビットごとに定数を持っていくと*が大きくなりますか?うーん...それは普通はあまりできない。私はあなたがこれをもう一度確認し、16進数で数字を印字しないようにして、少し分かりやすくすることをお勧めします。さらに、Joachimが削除された答えで言ったように、なぜそれがなくなったのか分かりません。 – unwind
このコードで唯一の問題は、符号付きの値を持つ '%llu'指定子を使用することです。私はそれがこのエラーを引き起こすだろうとは思わない。 – interjay