• 移位运算符 左移右移,与操作符 10进制数字 转高字节 低字节 数组


    移位运算符,是效率很高一种运算符,是用于二进制运算,我们编的程序最终都是二进制的,所以 在编码过程中,我们可以把移位运算符用于所有进制,但它是基于二进制的运算。
    在二进制数码中,位于更左边的数,所占的权值更高,也就是它所代表的数值越大,所以左移运算符,其实是把二进制数中的各个数位向左移动一位,最右边剩出来的末尾补零,
    这样就把这个数扩大成原来的一倍,也就相当于乘以2了,因为二进制的一个数的基数是2,你可以想想10进制的基数是10,把10往左移一位是不是就变成100了,也就是乘以了这个基数10,
    如果对二进制这种算法怀疑,可以算算试试。
     
    右移也就是把二进制各个数位位向右边推一位,最后就相当于除以2了。
     
    与操作符,是两个数 化为二进制位,右边对齐,左边补零,各列的数位两两相与,1与0得0, 1与1得1 ,0与1得0。
    1个16进制数,相当于4位的二进制数,因为4位二进制数刚好可以表示完一个16进制数。
     
    我们知道这些知识之后,就能把一个整数转换成高字节和低字节的数组了。
     
     int num = 86400;
                string numHex = "15180";
                byte b1 = (byte)((num >> 16) & 0xff);
                byte b2=(byte)((num >> 8) & 0xff);
                byte b3= (byte)(num & 0xff);
                Console.WriteLine(numHex);
                Console.WriteLine(b1 + "="+b1.ToString("x"));
                Console.WriteLine(b2 + "=" + b2.ToString("x"));
                Console.WriteLine(b3 + "=" + b3.ToString("x"));

     

    比如,这段程序,86400是十进制值,15180是16进制时的值。在这里 num>>16位,相当于把15180向右边推动4个位置,因为一个16进制位相当于4个二进制位,右移16,就16/4=4,
    也就是4个16进制位,也就是把5180抹掉 剩下1,然后1&0xff,0xff代表8个1 与00000001 一与最后就是1。
    剩下的都是同样的道理。
    当需要移动一位 一位的16进制码组成高低字节数组,就可以每次右移4位,与上0xf。
  • 相关阅读:
    DataWindow修改的单元格文字颜色改变
    DataWindow奇偶行颜色显示不同
    Retrieve时不清除DataWindow原有数据
    Camera拍照声设定
    使用Log.isLoggable方法
    Android Audio遇到播放无声时的分析
    耳机jack构造及在应用时可能出现的问题
    【Android】使用persist属性来调用脚本文件
    [Android][Audio] audio_policy.conf文件分析
    Android4.4 耳机检测分析
  • 原文地址:https://www.cnblogs.com/HelloQLQ/p/15508321.html
Copyright © 2020-2023  润新知