この回答に記載されているガイドを確認しましたが、まだビットシフトを理解していません。特に、データ型が登場することについて混乱しています。
以下:
unsigned int a = pow(2,31);
cout << (a << 1);
int
は 32 ビットであるため、予想どおり 0 を生成します1
。左に移動すると、何も表示されません。
しかし、次の
unsigned int a = 1;
unsigned char b = (unsigned char)a;
cout << (unsigned int)(b<<8);
256 を生成します。それはなぜですか? 私の推測では、achar
は 8 ビットなので、1 を左に 8 桁移動するとゼロになるはずです。
これを行う機能/シフトはありますか? (つまり1<<8
、0 に評価されます)。