long abc = 0x12345678;
abc >>= 8;
printf("%x\n", (unsigned char)abc);
abc >>= 8;
printf("%x\n", (unsigned char)abc);
abc >>= 8;
printf("%x\n", (unsigned char)abc);
0x12345678
在小端机器上的内存分布为78 56 34 12
当右移时在内存窗口表现的是向左移动,比如移动一次变成了 56 34 12 00
这时候整数值位0X00123456
但是当你把他看成char时,他只看第一个字节,也就是0X56了。