我正在使用pic32mx控制器並使用C32 tooluite v2.02編譯器和MPLAB-X IDE v 3.05。 我正在使用long long變量的位操作,但得到了錯誤的結果。long long long bitwise operation error pic32
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必須相等。
請給我建議這個操作的更好方法。如果在上述程序中有任何錯誤,請建議正確的路徑。
您是否看過生成的彙編代碼? –
所以當你按位時它的數量變得更大*而且它是一個常數?嗯...這通常不是很可能。我建議你仔細檢查一下,爲什麼不用十六進制打印數字,使它們稍微容易理解?再加上約阿希姆在他刪除的答案中所說的話,不知道爲什麼這些消失了。 – unwind
我用這段代碼看到的唯一問題是使用具有有符號值的'%llu'說明符。我懷疑這會導致這個錯誤。 – interjay