私はC言語について学んでいます。私はこのコードを持っています。必要に応じてさらに提供できます。
int result = 0;
int mask1 = 0x0000ffff;
mask1 = mask1 >> 28;
これは、gdbとprintを使用すると/x mask1
、0x0
正しい値になります。では、なぜですか。
int result = 0;
int mask1 = 0xffffffff;
mask1 = mask1 >> 28;
print 0xffffffff
0x0000000f
28ビットシフトしたままなので、印刷するべきではありませんか?
それは私の64ビットマシンでintが占めるビット数と関係がありますか?私はこれを見ましたが、それはすべてに完全に答えることはできませんでした。