我是按位运算的新手。我有 AND、OR、XOR 和 2s 补码的基本概念。但是我遇到了以下代码,无法弄清楚输出。
char c1 = 0xFF; // -1
int shifted = c1 << 8; //-256 (-1 * 256)
printf("%d, %x\n", shifted, shifted);
int myInt;
myInt = 0xFFFFFFE2;
printf("%d\n", myInt);
int i = 0xff;
printf("%d\n", i<<2);
输出是:
-256, ffffff00
-30
1020
请帮助我了解这里发生了什么!