在C语言中,位移操作符并不像我预期的那样工作。这无疑是我的误解,能否有人解释一下发生了什么?
但实际情况并非如此。
第一个结果是:
第二个(如预期):
unsigned char in = 155;
unsigned char res;
res = (in << 6) >> 7;
应该与之相同
res = in << 6;
res = res >> 7; // can also use res >>= 7;
但实际情况并非如此。
第一个结果是:
in = 10011011
res = 01001101
第二个(如预期):
in = 10011011
res = 00000001
看起来在第一次操作中,它是在原始数据上每个转移都进行操作,而不是先进行第一个转换,然后在第一个结果上执行第二个转换。有什么想法?