티스토리 뷰

Code/C#

[C#] Shift Operator

Hide Code 2010. 2. 17. 17:46
perform a circular bit shift in C#
(int32variable << bits) | (int32variable >> (32 - bits))



using System;

namespace Shifting
{
    class Program
    {
        static void Main(string[] args)
        {
            int num;
            int cnt;

            Console.WriteLine("<< 1");
            num = 1;
            cnt = 0;
            do
            {
                printBinaryString(num, cnt);
                num = num << 1;
                cnt++;
            } while (cnt < 33);

            Console.WriteLine();
            Console.WriteLine("<< -1");
            num = -1;
            cnt = 0;
            do
            {
                printBinaryString(num, cnt);
                num = num << 1;
                cnt++;
            } while (cnt < 33);

            Console.WriteLine();
            Console.WriteLine(">> Int32.MaxValue");
            num = Int32.MaxValue;
            cnt = 0;
            do
            {
                printBinaryString(num, cnt);
                num = num >> 1;
                cnt++;
            } while (cnt < 33);

            Console.WriteLine();
            Console.WriteLine(">> Int32.MinValue");
            num = Int32.MinValue;
            cnt = 0;
            do
            {
                printBinaryString(num, cnt);
                num = num >> 1;
                cnt++;
            } while (cnt < 33);
        }

        private static void printBinaryString(int num, int cnt)
        {
            string bin = Convert.ToString(num, 2);
            bin = bin.PadLeft(32, '0');
            Console.WriteLine("{0,2} {1,11} {2}", cnt, num, bin);
        }
    }
}


Output

<< 1
 0           1 00000000000000000000000000000001
 1           2 00000000000000000000000000000010
 2           4 00000000000000000000000000000100
 3           8 00000000000000000000000000001000
 4          16 00000000000000000000000000010000
 5          32 00000000000000000000000000100000
 6          64 00000000000000000000000001000000
 7         128 00000000000000000000000010000000
 8         256 00000000000000000000000100000000
 9         512 00000000000000000000001000000000
10        1024 00000000000000000000010000000000
11        2048 00000000000000000000100000000000
12        4096 00000000000000000001000000000000
13        8192 00000000000000000010000000000000
14       16384 00000000000000000100000000000000
15       32768 00000000000000001000000000000000
16       65536 00000000000000010000000000000000
17      131072 00000000000000100000000000000000
18      262144 00000000000001000000000000000000
19      524288 00000000000010000000000000000000
20     1048576 00000000000100000000000000000000
21     2097152 00000000001000000000000000000000
22     4194304 00000000010000000000000000000000
23     8388608 00000000100000000000000000000000
24    16777216 00000001000000000000000000000000
25    33554432 00000010000000000000000000000000
26    67108864 00000100000000000000000000000000
27   134217728 00001000000000000000000000000000
28   268435456 00010000000000000000000000000000
29   536870912 00100000000000000000000000000000
30  1073741824 01000000000000000000000000000000
31 -2147483648 10000000000000000000000000000000
32           0 00000000000000000000000000000000

<< -1
 0          -1 11111111111111111111111111111111
 1          -2 11111111111111111111111111111110
 2          -4 11111111111111111111111111111100
 3          -8 11111111111111111111111111111000
 4         -16 11111111111111111111111111110000
 5         -32 11111111111111111111111111100000
 6         -64 11111111111111111111111111000000
 7        -128 11111111111111111111111110000000
 8        -256 11111111111111111111111100000000
 9        -512 11111111111111111111111000000000
10       -1024 11111111111111111111110000000000
11       -2048 11111111111111111111100000000000
12       -4096 11111111111111111111000000000000
13       -8192 11111111111111111110000000000000
14      -16384 11111111111111111100000000000000
15      -32768 11111111111111111000000000000000
16      -65536 11111111111111110000000000000000
17     -131072 11111111111111100000000000000000
18     -262144 11111111111111000000000000000000
19     -524288 11111111111110000000000000000000
20    -1048576 11111111111100000000000000000000
21    -2097152 11111111111000000000000000000000
22    -4194304 11111111110000000000000000000000
23    -8388608 11111111100000000000000000000000
24   -16777216 11111111000000000000000000000000
25   -33554432 11111110000000000000000000000000
26   -67108864 11111100000000000000000000000000
27  -134217728 11111000000000000000000000000000
28  -268435456 11110000000000000000000000000000
29  -536870912 11100000000000000000000000000000
30 -1073741824 11000000000000000000000000000000
31 -2147483648 10000000000000000000000000000000
32           0 00000000000000000000000000000000

>> Int32.MaxValue
 0  2147483647 01111111111111111111111111111111
 1  1073741823 00111111111111111111111111111111
 2   536870911 00011111111111111111111111111111
 3   268435455 00001111111111111111111111111111
 4   134217727 00000111111111111111111111111111
 5    67108863 00000011111111111111111111111111
 6    33554431 00000001111111111111111111111111
 7    16777215 00000000111111111111111111111111
 8     8388607 00000000011111111111111111111111
 9     4194303 00000000001111111111111111111111
10     2097151 00000000000111111111111111111111
11     1048575 00000000000011111111111111111111
12      524287 00000000000001111111111111111111
13      262143 00000000000000111111111111111111
14      131071 00000000000000011111111111111111
15       65535 00000000000000001111111111111111
16       32767 00000000000000000111111111111111
17       16383 00000000000000000011111111111111
18        8191 00000000000000000001111111111111
19        4095 00000000000000000000111111111111
20        2047 00000000000000000000011111111111
21        1023 00000000000000000000001111111111
22         511 00000000000000000000000111111111
23         255 00000000000000000000000011111111
24         127 00000000000000000000000001111111
25          63 00000000000000000000000000111111
26          31 00000000000000000000000000011111
27          15 00000000000000000000000000001111
28           7 00000000000000000000000000000111
29           3 00000000000000000000000000000011
30           1 00000000000000000000000000000001
31           0 00000000000000000000000000000000
32           0 00000000000000000000000000000000

>> Int32.MinValue
 0 -2147483648 10000000000000000000000000000000
 1 -1073741824 11000000000000000000000000000000
 2  -536870912 11100000000000000000000000000000
 3  -268435456 11110000000000000000000000000000
 4  -134217728 11111000000000000000000000000000
 5   -67108864 11111100000000000000000000000000
 6   -33554432 11111110000000000000000000000000
 7   -16777216 11111111000000000000000000000000
 8    -8388608 11111111100000000000000000000000
 9    -4194304 11111111110000000000000000000000
10    -2097152 11111111111000000000000000000000
11    -1048576 11111111111100000000000000000000
12     -524288 11111111111110000000000000000000
13     -262144 11111111111111000000000000000000
14     -131072 11111111111111100000000000000000
15      -65536 11111111111111110000000000000000
16      -32768 11111111111111111000000000000000
17      -16384 11111111111111111100000000000000
18       -8192 11111111111111111110000000000000
19       -4096 11111111111111111111000000000000
20       -2048 11111111111111111111100000000000
21       -1024 11111111111111111111110000000000
22        -512 11111111111111111111111000000000
23        -256 11111111111111111111111100000000
24        -128 11111111111111111111111110000000
25         -64 11111111111111111111111111000000
26         -32 11111111111111111111111111100000
27         -16 11111111111111111111111111110000
28          -8 11111111111111111111111111111000
29          -4 11111111111111111111111111111100
30          -2 11111111111111111111111111111110
31          -1 11111111111111111111111111111111
32          -1 11111111111111111111111111111111








'Code > C#' 카테고리의 다른 글

[C#] Windows UI Automation Sample  (0) 2010.04.13
[C#] indexer sample  (0) 2010.02.23
[C#] Register/Unregister ActiveX Control  (0) 2009.03.15
[C#] Detect UserControl's Closing  (0) 2009.01.07
[C#] DockPanel Suite Sample  (0) 2009.01.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함