0

型の正確なバイナリ形式は何ですかunsigned long long(少なくともビジュアル スタジオでは)。

ポインターのエイリアシングを使用してビット単位の操作を行っています。ポインターの操作でビットを設定し、ポインター (エイリアス)unsigned charで他の操作を実行しています。unsigned long long

の形式unsigned long longが奇妙に見えるため、結果が台無しになります。また、ビットシフト操作も奇妙に動作するようです。

ビットマスク テストから、このデータは から配置されているようですright: LSB->MSB : left。これは、>> シフトがデータを下位ビットではなく上位ビットに移動することを意味します。これは正しいですか?

コンパイラは ICC 13.0、OS は Windows 7-64 です。

4

1 に答える 1

2

説明するバイト レイアウトはリトル エンディアンです。これは、Intel プロセッサが一般的に使用するレイアウトです。ビット シフトは、数値のメモリ レイアウトではなく値に依存するため、エンディアンが操作の値に影響を与えることはありません。ただし、a へのキャストやポインター演算を使用してそのセグメントを抽出するなど、ポインター エイリアシングを使用している場合は、char *リトル エンディアンの Intel プロセッサでは、予期していたものとは異なるエンディアン依存の動作が発生する可能性があります。

于 2013-02-19T05:35:54.207 に答える