私はを持っていて、int8_t
それを8ビット以上左にシフトするとどうなるかを見たかったのです。だからこれは私がしたことです:
int8_t x = 1;
std::cout << (x << 10);
何らかの理由で、これは、型にその数を表すのに十分なビットが含まれているかのように1024を返します。与えられたビットより多くシフトすると、すべてのビットで0になると思いました(または、未定義の動作につながる符号付きオーバーフロー/アンダーフロー)。また、このコードを実行して、最大数を取得しましたint8_t
。
std::numeric_limits<int8_t>::max(); // 127
このタイプの最大数は127ですが、左にシフトすると、符号なしタイプよりもさらに高くなる可能性があります。これはどのように可能ですか?