乱数生成の作成に取り組んでいました。ユニオンを使用してバイトにアクセスしています。
typedef unsigned int uint;
typdef unsigned char uchar;
union
{
uint intBits;
uchar charBits[4];
};
//はい、intが4であることが保証されていないことは知っていますが、それは無視してください。
したがって、番号1がこのユニオンに格納されている場合、次のようになります。
00000000 0000000 00000000 00000001
右?
-1のintは次のようになりますか
00000000 0000000 00000000 00000001
また
10000000 0000000 00000000 00000001
つまり、実際には、uintのアドレスは1であるビットですよね?そして、charBits [0]のアドレスは1であるビットですよね?紛らわしいのはこれです。charBits [1]、ここに来るには左に移動する必要があります
!
00000000 0000000 00000000 00000001
では、メモリアドレスは右から左または左から右に大きくなりますか?
編集:私は64ビットのWindows7システムInteli7CPUを使用しています。