【发布时间】:2019-04-01 14:01:16
【问题描述】:
这是我的代码
int a=2147483647;
int b= a<<1;
cout<<"a="<<a<<", b="<<b;
我得到的输出是- a=214783647, b=-2
a 的二进制表示是
0111 1111 1111 1111 1111 1111 1111 1111
通过将其移动 1 位,它将更改符号位并将 LSB 替换为 0。所以,我认为答案将是 -ve 并且幅度将减去 1,即 -2147483646 但它给出的结果为 -2 。请解释一下。
【问题讨论】: