“”和“” java
生活随笔
收集整理的這篇文章主要介紹了
“”和“” java
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
“>>”算術右移運算符, 表示帶符號右移,它使用最高位填充移位后左側的空位。右移的結果為:每移一位,第一個操作數被2除一次,移動的次數由第二個操作數確定。
按二進制形式把所有的數字向右移動對應巍峨位數,低位移出(舍棄),高位的空位補符號位,即正數補零,負數補“>>>“無符號右移運算,邏輯右移, 表示無符號右移, 只對位進行操作,沒有算術含義,它用0填充左側的空位。 按二進制形式把所有的數字向右移動對應位數,低位移出(舍棄),高位的空位補零。對于正數來說和帶符號右移相同,對于負數來說不同。 j>>>i 與 j/(int)(Math.pow(2,i))的結果相同,其中i和j是整形。算術右移不改變原數的符號,而邏輯右移不能保證這點。 移位運算符約簡其右側的操作數,當左側操作數是int類型時,右側以32取模;當左側是long類型時,右側以64取模。測試代碼1:public class Test { public static void main(String[] args) { System.out.println("1、以下測試>:"); int a = 1, b = 2; System.out.println(a > b); System.out.println("\n2、以下測試>>:"); System.out.println("15 >> 2 = " + (15 >> 2)); System.out.println("\n3、以下測試>>>:"); for (int i = 0; i < 10; i++) { for (int j = 0; j < 500; j = j + 5) { System.out.println(j / (int) (Math.pow(2, i))); System.out.println(j >>> i); } } } }測試代碼2:public class Test { public Test(){ System.out.println("=============算術右移 >> ==========="); int i=0xC0000000; System.out.println("移位前:i= "+i+" = "+Integer.toBinaryString(i)+"(B)"); i=i>>28; System.out.println("移位后:i= "+i+" = "+Integer.toBinaryString(i)+"(B)"); System.out.println("---------------------------------"); int j=0x0C000000; System.out.println("移位前:j= "+j+" = "+Integer.toBinaryString(j)+"(B)"); j=j>>24; System.out.println("移位后:j= "+j+" = "+Integer.toBinaryString(j)+"(B)"); System.out.println("\n"); System.out.println("==============邏輯右移 >>> ============="); int m=0xC0000000; System.out.println("移位前:m= "+m+" = "+Integer.toBinaryString(m)+"(B)"); m=m >>> 28; System.out.println("移位后:m= "+m+" = "+Integer.toBinaryString(m)+"(B)"); System.out.println("---------------------------------"); int n=0x0C000000; System.out.println("移位前:n= "+n+" = "+Integer.toBinaryString(n)+"(B)"); n=n>>24; System.out.println("移位后:n= "+n+" = "+Integer.toBinaryString(n)+"(B)"); System.out.println("\n"); System.out.println("==============移位符號的取模==============="); int a=0xCC000000; System.out.println("移位前:a= "+a+" = "+Integer.toBinaryString(a)+"(B)"); System.out.println("算術右移32:a="+(a>>32)+" = "+Integer.toBinaryString(a>>32)+"(B)"); System.out.println("邏輯右移32:a="+(a>>>32)+" = "+Integer.toBinaryString(a>>>32)+"(B)"); } public static void main(String[] args){ new Test(); } } 運行結果: =============算術右移 >> =========== 移位前:i= -1073741824 = 11000000000000000000000000000000(B) 移位后:i= -4 = 11111111111111111111111111111100(B) --------------------------------- 移位前:j= 201326592 = 1100000000000000000000000000(B) 移位后:j= 12 = 1100(B)==============邏輯右移 >>> ============= 移位前:m= -1073741824 = 11000000000000000000000000000000(B) 移位后:m= 12 = 1100(B) --------------------------------- 移位前:n= 201326592 = 1100000000000000000000000000(B) 移位后:n= 12 = 1100(B)
按二進制形式把所有的數字向右移動對應巍峨位數,低位移出(舍棄),高位的空位補符號位,即正數補零,負數補“>>>“無符號右移運算,邏輯右移, 表示無符號右移, 只對位進行操作,沒有算術含義,它用0填充左側的空位。 按二進制形式把所有的數字向右移動對應位數,低位移出(舍棄),高位的空位補零。對于正數來說和帶符號右移相同,對于負數來說不同。 j>>>i 與 j/(int)(Math.pow(2,i))的結果相同,其中i和j是整形。算術右移不改變原數的符號,而邏輯右移不能保證這點。 移位運算符約簡其右側的操作數,當左側操作數是int類型時,右側以32取模;當左側是long類型時,右側以64取模。測試代碼1:public class Test { public static void main(String[] args) { System.out.println("1、以下測試>:"); int a = 1, b = 2; System.out.println(a > b); System.out.println("\n2、以下測試>>:"); System.out.println("15 >> 2 = " + (15 >> 2)); System.out.println("\n3、以下測試>>>:"); for (int i = 0; i < 10; i++) { for (int j = 0; j < 500; j = j + 5) { System.out.println(j / (int) (Math.pow(2, i))); System.out.println(j >>> i); } } } }測試代碼2:public class Test { public Test(){ System.out.println("=============算術右移 >> ==========="); int i=0xC0000000; System.out.println("移位前:i= "+i+" = "+Integer.toBinaryString(i)+"(B)"); i=i>>28; System.out.println("移位后:i= "+i+" = "+Integer.toBinaryString(i)+"(B)"); System.out.println("---------------------------------"); int j=0x0C000000; System.out.println("移位前:j= "+j+" = "+Integer.toBinaryString(j)+"(B)"); j=j>>24; System.out.println("移位后:j= "+j+" = "+Integer.toBinaryString(j)+"(B)"); System.out.println("\n"); System.out.println("==============邏輯右移 >>> ============="); int m=0xC0000000; System.out.println("移位前:m= "+m+" = "+Integer.toBinaryString(m)+"(B)"); m=m >>> 28; System.out.println("移位后:m= "+m+" = "+Integer.toBinaryString(m)+"(B)"); System.out.println("---------------------------------"); int n=0x0C000000; System.out.println("移位前:n= "+n+" = "+Integer.toBinaryString(n)+"(B)"); n=n>>24; System.out.println("移位后:n= "+n+" = "+Integer.toBinaryString(n)+"(B)"); System.out.println("\n"); System.out.println("==============移位符號的取模==============="); int a=0xCC000000; System.out.println("移位前:a= "+a+" = "+Integer.toBinaryString(a)+"(B)"); System.out.println("算術右移32:a="+(a>>32)+" = "+Integer.toBinaryString(a>>32)+"(B)"); System.out.println("邏輯右移32:a="+(a>>>32)+" = "+Integer.toBinaryString(a>>>32)+"(B)"); } public static void main(String[] args){ new Test(); } } 運行結果: =============算術右移 >> =========== 移位前:i= -1073741824 = 11000000000000000000000000000000(B) 移位后:i= -4 = 11111111111111111111111111111100(B) --------------------------------- 移位前:j= 201326592 = 1100000000000000000000000000(B) 移位后:j= 12 = 1100(B)==============邏輯右移 >>> ============= 移位前:m= -1073741824 = 11000000000000000000000000000000(B) 移位后:m= 12 = 1100(B) --------------------------------- 移位前:n= 201326592 = 1100000000000000000000000000(B) 移位后:n= 12 = 1100(B)
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的“”和“” java的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webform 页面传值的方法总结
- 下一篇: OC面向对象—封装