byte d = 1;
      byte e = (byte) (d | 10000000);
    我觉得e 应该是 -1 .
   可结果是-127.
对于位操作我还是比较生疏。

解决方案 »

  1.   

    JAVA不支持代码直接写二进制的,如果想达到你的效果,写16进制的数字
    byte d = 1; 
    byte e = (byte) (d | 10000000); 
    修改成:
    byte d = 1; 
    byte e = (byte) (d | 0x80); 并且二进制编码为10000001的数值也不是-1,因为负数在程序中以补码形式存放,关于计算补码和源码的方法可以看我BLOG中《Java编程那些事儿》中关于二进制部分的讲述。
      

  2.   

     byte d = 1; 
         short  e =  (short)(d | 10000000);
         System.out.print(e);
    结果为:-27007
     byte d = 1; 
         int  e =  (int)(d | 10000000);
         System.out.print(e);
    结果为:10000001
    2楼应该是正确的