我试图理解按位运算并且根据我整数包含32位并且从LSB第0位置到MSB第31位置所以如果我将左移位1设置为31位置我想我应该得到2 ^ 31和二进制表示它将是10000000 00000000 00000000 00000000所以为什么我的结果是负面的?如果我错了,请纠正我。
#include<bits/stdc++.h>
using namespace std;
int main(){
int i=1<<31;
cout<<i;
return 0;
}
答案 0 :(得分:0)
Integer是32位数据类型,其最重要的位代表符号。 (这是第32位)
因此,您获得了负值
答案 1 :(得分:0)
C ++ 未指定包含1&lt;&lt; 31的程序的行为。
在不同的平台上,您可能会得到不同的答案,或编译错误,或格式化驱动器的程序,或任何其他行为。