C#移位運算的典型事例

public class exe
    {
        public static void Main()
        {
            int a, b, c;
            c = 0x1af034;
            a = (c >> 16) & 0xffff;
            b = c & 0x00ff;
            Console.WriteLine("a is {0}",a );
            Console.WriteLine("b is {0}",b );
            Console.Read();
        }
    }

1、 c >> 16 = 0x1AF034 >> 16 = 0x00001A 0x00001A & 0x00FFFF = 0x00001A = 26 2、 c & 0x0000FF = 0x1AF034 & 0x0000FF = 0x000034 = 52 位移運算就是將數字的二進制形式按指定的位數左移或右移,因爲十六進制的每位數可以化成一個四位數的二進制的數字(2的四次方爲16),所以在二進制中移動16位就是在十六進制中移動16/4 = 4位,那麼0x1AF034 >> 16 = 0x00001A 按位且(&)這個運算符,這個運算符的意思是將數字轉爲二進制逐位進行且比較,按照1且1爲1,1且0爲0,0且0爲0的規則,這樣拆開來運算後再整合爲結果 其實有個快捷方法,還是因爲十六進制的每位數可以化成一個四位數的二進制的數字(2的四次方爲16),而且0x0 = 0000B,0xF = 1111B,也就是說如果對應位上數是F,那麼這位上的數可以保留,否則變爲0,如上面的0x0000FF & 0x1AF034,你可以看到前面的數字只有個位和十位上有數字,所以只保留後面數字的個位和十位就是結果,那麼就是0x000034 = 52了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章