作者wsx247 (MLC)
看板java
标题[问题] 关於x&y的运作
时间Mon Jul 10 11:14:11 2017
最近在工作上有用到位元的& 和 or的运算
发现结果与我认知中有写落差
------以下范例------
public class test {
public static void main(String args[]) throws IOException{
byte t = (byte) 0b10000000;
byte y = (byte) ((t & 0b000000000000000100000000)>>1);
System.out.println(y);
System.out.println(t);
}
}
输出为:
128
-128
但是若改成
public class test {
public static void main(String args[]) throws IOException{
byte t = (byte) 0b01000000;
byte y = (byte) ((t & 0b000000000000000100000000)>>1);
System.out.println(y);
System.out.println(t);
}
}
输出就是
0
64
---------问题--------
我以为不足的bit会用补上
但一个范例码让我完全不懂会变成这样
而且如果我把t变数改成long型态
输出就会变成
0
128
还请大大们解惑谢谢Orz
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.181.86
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1499656453.A.8F6.html
1F:推 snowlike: Java 运算存在 >> 和 >>> 意义不同,查询一下;另外你 07/10 18:10
2F:→ snowlike: 需要熟悉 byte 能够保存的最大正数和最小负数是多少 07/10 18:10