質問: シフト演算の考え方が良くわかりません。 例えば、論理シフトで 2進数 11101100 を左に2ビットシフトすると、 10110000 になり、4倍になっているはずですが、10進数に直してみると、
回答: あふれた1が消えているからです。 十分な長さで考え直します。 0000000011101100=236 を左2ビットシフトすると 0000001110110000=944 となり、確かに4倍になっています。 単なるシフトということであれば、 0でも1でもあふれた値を消すのは構わないけれど、2^2倍の値とも一致するという便利な性質は失われるということです。