int main(){
ll a=pow(2,32);
cout <<a<<endl;
cout << (-1<<1)<<endl;
printf("%x",-1<<1);
}
上記のコードでは、次の出力が得られます。
4294967296
-2
fffffffe
4294967296
fffffffe
10進数では基本的に 16 進数と同じ2^32
です。printf と cout の動作が異なるのはなぜですか? そして、このシフトはどのように正確に機能しますか?