none
关于位运算的一些问题 RRS feed

  • 常规讨论

  • 好吧,我首先承认在学校里不认真上课,才来提这样的问题,这个是学过的,但是忘了~~~希望各位大牛指点一二。废话不多说了,下面是代码

     

        public static byte[] getBytesShort(short s, Boolean asc)
            {
                byte[] buf = new byte[2];
                if (asc)
                    for (int i = buf.Length - 1; i >= 0; i--)
                    {
                        buf[i] = (byte)(s & 0x00ff);
                        s >>= 8;
                    }
                else
                    for (int i = 0; i < buf.Length; i++)
                    {
                        buf[i] = (byte)(s & 0x00ff);
                        s >>= 8;
                    }
                return buf;
            }

    我想问的是这个  “(s & 0x00ff)” 或运算是什么意思???有什么用,原理是什么??

    还有    s >>= 8  这个位移运算又是什么意思,有什么用?原理是什么??

     

    先谢谢各位大牛了

     

    2011年3月24日 1:49

全部回复

  • 这些都是基本的二进制运算符号。& 执行 按位 “与”操作;s >>= 8 等同于 s=s>>8,>>是右移运算符,将第一个操作数向右移动第二个操作数所指定的位数。

    建议去看一本书:IBM-PC汇编,清华大学出版。

    二进制运算本身比较简单,不过还是最好先看看基础理论。


    family as water
    2011年3月24日 2:02
  • “(s & 0x00ff)”   二进制  取每一位 做与运算的样子

    >>我知道是香油移动 相当于/2     >>=我就不知道了

     


    入了ipad,最近用ipad上论坛
    2011年3月24日 2:10
  • dear
    1.(s & 0x00ff)其中的 & 是做二進制 And 運算,在台灣的計算機概論會學到。
    2.>>是右移運算,為什麼要用這個東西,就看演算法的運用了。
    http://msdn.microsoft.com/zh-tw/library/xt18et0d.aspx
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年3月24日 9:03
  • 这节课没听无所谓,位运算是计算机基础,答案已经有了。给你点建议,仔细看书,如果找不到。google是一个很好的搜索引擎,听说个大概的概念,名词,去搜索一下,顺带的系统的了解一下位,字节,变量之间的关系,如何做位运算,与,或,非,异或,位移,补码,移码,反码等概念。
    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年3月25日 4:18
    版主