作者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/m.aspx?n=bbs/java/M.1499656453.A.8F6.html
1F:推 snowlike: Java 運算存在 >> 和 >>> 意義不同,查詢一下;另外你 07/10 18:10
2F:→ snowlike: 需要熟悉 byte 能夠保存的最大正數和最小負數是多少 07/10 18:10