int x = -2139062144; //In binary: 10000000100000001000000010000000
int k = x << 1;
k
是 16843008
(二进制:1000000010000000100000000
),我不明白为什么?
10000000100000001000000010000000
是如何通过左移一位变为 1000000010000000100000000
的?
我预计它是:10000001000000010000000100000000
保留右移符号中的符号。
最佳答案
非常简单。
int
最多只能携带 32 位。好吧,一直都是 32 位。
在
10000000100000001000000010000000
最重要的前导位是 1。
由于左移,您认为这个注定的位会发生什么?
没了。它不复存在了。它加入了无形的合唱团。这是前任。
当然,最低位有一个新生的 0 位。所以你最终得到了
00000001000000010000000100000000
因此,或者:
1000000010000000100000000
关于c++ - 有人可以解释这个程序如何给出这个输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37510831/