这个Leftshift赋值运算符的输出是-8。我不知道如何,请帮忙!
#include < stdio.h>
int main()
{
int y = -1;
y <<= 3;
printf("%d", y);// prints -8;
return 0;
}
最佳答案
在32位2的补码有符号整数中,这些数字的十六进制和二进制表示为:
-1 = 0xffffffff = 11111111 11111111 11111111 11111111
-8 = 0xfffffff8 = 11111111 11111111 11111111 11111000
第二个显然是第一个左移三位,左边的三个额外的“ 1”“掉落”在左侧,右边的三位用零填充。
关于c - C中的按位右移赋值运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31765626/