看板 java 關於我們 聯絡資訊
最近在工作上有用到位元的& 和 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://www.ptt.cc/bbs/java/M.1499656453.A.8F6.html
snowlike: Java 運算存在 >> 和 >>> 意義不同,查詢一下;另外你 07/10 18:10
snowlike: 需要熟悉 byte 能夠保存的最大正數和最小負數是多少 07/10 18:10