我正在用 a = 0xff 初始化一个 unsigned short int (所有位都已设置)。然后我将 b 分配给 a>>7 ,它应该产生 (0000 0001) 并且确实如此。然而,奇怪的是,当我将 c 分配给 a<<7 时,它并不等于 (1000 0000)。我通过输出 0x80(即 1000 0000)和 c 对此进行了测试,但它们并不相同。
这是一些代码:
unsigned short int a = 0xff;
unsigned short int b = a>>7;
unsigned short int c = a<<7; // c should == 0x80
我不确定问题是什么。任何帮助表示赞赏。谢谢。
PS “输出”是指以十进制和十六进制形式输出 0x80 和 c。