2

私は 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;
}

出力:

    489631651402

    492260348528

計算によると、この結果は誤りです。data0 と data1 は等しくなければなりません。

この操作のより良い方法を教えてください。上記の手順にエラーがある場合は、正しいパスを提案してください。

4

1 に答える 1

-1

すべてのビットのマスクが必要な場合は、ULLONG_MAX を定数として使用します。これらの 48 ビットのみをマスクする必要がある場合は、0x0FFFFFFFFFF LLを使用します。

于 2016-04-08T10:07:48.190 に答える