Вот мой код
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.Пожалуйста, объясните.