[問題] 關於x&y的運作

看板java作者 (MLC)時間8年前 (2017/07/10 03:14), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
最近在工作上有用到位元的& 和 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

07/10 18:10, , 1F
Java 運算存在 >> 和 >>> 意義不同,查詢一下;另外你
07/10 18:10, 1F

07/10 18:10, , 2F
需要熟悉 byte 能夠保存的最大正數和最小負數是多少
07/10 18:10, 2F
文章代碼(AID): #1POl45Zs (java)
文章代碼(AID): #1POl45Zs (java)