或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

C#::int32を延々と左シフトさせてみる。

ビット演算のお勉強。まずは、1を無限に左しふとさせてみようと無限ループ内でシフトさせてみた。ビット演算とはなんぞや?と思う人下まで読み進めてみて下さい。ビットを左シフトさせるには、<<演算子を使う。<<=と書くことも可能。

Sample Code(サンプルコード)

            Int32 d = 1;
            while (true)
            {
                Debug.WriteLine(Convert.ToString(d, 2));
                d <<= 1;
            }

Result(実行結果)

1
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
10000000000
100000000000
1000000000000
10000000000000
100000000000000
1000000000000000
10000000000000000
100000000000000000
1000000000000000000
10000000000000000000
100000000000000000000
1000000000000000000000
10000000000000000000000
100000000000000000000000
1000000000000000000000000
10000000000000000000000000
100000000000000000000000000
1000000000000000000000000000
10000000000000000000000000000
100000000000000000000000000000
1000000000000000000000000000000
10000000000000000000000000000000
0
0
0
0
0
0
0
0

とこうなるわけです。<<1で1bit左シフトさせるわけですね。2進数で1bit左シフトさせるとは2倍しているということに等しい。それを無限にループさせると、int32型に関しては、bit数が32になった時点で桁数がmaxになる。それ以上左シフトさせると、0になるということらしいです。