还有啥时候用 0xFF  ?? 

解决方案 »

  1.   

    还有 在网上看了这么一个咚咚 。 
    i = ((b[offset++] & 0xFF) << 24) | ((b[offset++] & 0xFF) << 16) |
         ((b[offset++] & 0xFF) <<  8) | (b[offset] & 0xFF);谁知道是啥意思?
      

  2.   

    比較下面的結果
    byte b = -1;
    System.out.println(0xff & b);
    System.out.println(b);第一個其實是用 00000000 00000000 00000000 11111111當遮罩,所以值是255。
    第二個沒有,所以直接轉 -1 為 int。
      

  3.   

    所以位元運算時,要避免正負號問題,就會用0xFF。
      

  4.   

    這是計算機概論會提到的東西。一開始大家會直覺得認為,最末位當正負號這個沒問題,但為什麼不直接加正負號就好
    例如 00000000 00000000 00000000 00000001 是 1
    那讓 10000000 00000000 00000000 00000001 為 -1  不是簡單明瞭。問題就出在 0 因為如果用上述的表示法 0 就會有 +0 和 -0 這樣很怪(一補數的表示法)。
    這裡有詳細說明
    http://zh.wikipedia.org/zh-tw/%E4%BA%8C%E8%A3%9C%E6%95%B8
      

  5.   

    把 4 個 byte byte[0] byte[1] byte[2] byte[3] 按這樣順序填入 int 的4個byte。
      

  6.   


        public int getIntByBytes(byte[] arr) {
            byte[] temp=arr;
            int intValue= 0;
            for (int i = 0; i < temp.length; i++) {
                intValue+= (temp[i] & 0xFF) << (8*(3 - i));
            }
            return intValue;
        }
      

  7.   

     /**
         * 返回所选中消息类型的个数,以占位符的形式返回(二进制)
         * @return
         */
        private long getTraceObjects()
        {
            long traceObjects = 0;
            for (int i = 0; i < chkBssapInfo.length; i++)
            {
                if (chkBssapInfo[i].isSelected())
                {
                    traceObjects += (1 << displaceIndex[i]);
                }
            }
            return traceObjects;
        } 
    帮助你理解一下。消息类型是用复选框来选择的