java 無符號右移>>> 有符號右移>>
阿新 • • 發佈:2018-11-11
有符號右移>>
有符號右移就是右移之後,左邊的補上符號位,正數補0,負數補1
無符號右移>>>
無符號右移就是右移之後,無論該數為正還是為負,右移之後左邊都是補上0
左移<<
左移不區分有符號和無符號,都是左移之後右邊補上0,最左邊的符號位也直接移走
測試程式碼如下,直接看輸出就能明白
System.out.println("java 右移"); Integer a = -5; System.out.println(Integer.toBinaryString(a)); System.out.println(Integer.toBinaryString(a >> 2)); System.out.println(Integer.toBinaryString(a >>> 2)); // java 右移 // 11111111111111111111111111111011 // 11111111111111111111111111111110 // 111111111111111111111111111110 注:前邊的兩個0被省略了 System.out.println("java 負數 左移"); Integer b = -(int)Math.pow(2, 31); System.out.println(Integer.toBinaryString(b)); System.out.println(Integer.toBinaryString(b << 2)); // java 負數 左移 // 10000000000000000000000000000001 // 100 注:不保留符號位,符號位直接移走 System.out.println("java 正數 左移"); Integer c = 5; System.out.println(Integer.toBinaryString(c)); System.out.println(Integer.toBinaryString(c << 2)); // java 正數 左移 // 101 // 10100