2

整数から個々のビットをマスキングまたは抽出する操作は、エンディアンに依存していますか? いくつかのコードを書きましたが、1 つのタイプのハードウェアにしかアクセスできないため、その演算子がエンディアンに依存しないかどうかを実際に確認することはできません。バグを見つけたらお知らせください。注: このコードは、宿題の問題と個人的な教育のために書かれています。

 void PrintDecimalIntegerInBinary (long long n) 
 {  
    PrintDecimalInBinaryRecursion(n, n >= 0);
 }

 void PrintDecimalInBinaryRecursion (long long n, bool sign) 
 {
    if (n == 0) {
        cout << (sign ? 0x0 : 0x1);
    }
    else {
        PrintDecimalInBinaryRecursion((unsigned long long)n >> 1, sign);
    cout << (n & 0x1);
    }     
 }

ご協力いただきありがとうございます。

4

1 に答える 1

5

エンディアンは、データの処理方法ではなく、データの保存方法のみを決定します。そのため、ビットごとの演算子またはビット シフトは、エンディアンの影響を受けません。具体的に0x1は、エンディアンに関係なく同じことを意味します。

于 2012-04-12T10:37:58.067 に答える