java中的操作符(位操作符>>与>>>的区别)
生活随笔
收集整理的這篇文章主要介紹了
java中的操作符(位操作符>>与>>>的区别)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本人學習地址:JAVA自學網站HOW2J
package operateTest;//import java.util.Scanner;public class OperateTest {public static void main(String[] args) {int a = 123;String b = Integer.toBinaryString(a);System.out.println(a+"的二進制是"+b);String c = Integer.toBinaryString(~a);System.out.println(a+"的二進制取反后為"+(c));// int : 4 byte = 4 * 8 = 32 bitSystem.out.println(a^0);//任何數與0異或的值為它本身System.out.println(a^a);//任何數與自己異或的值為0//異或(^),同位上,異:1,同:0int v = 6;int w = -9;String sv,sw,sv1,sv2,sw1,sw2;sv = Integer.toBinaryString(v);sw = Integer.toBinaryString(w);int v1 = v >> 1;int w1 = w >> 1;sv1 = Integer.toBinaryString(v1);sw1 = Integer.toBinaryString(w1);int v2 = v >>> 1;int w2 = w >>> 1;sv2 = Integer.toBinaryString(v2);sw2 = Integer.toBinaryString(w2);System.out.println(v+"的二進制是"+sv);System.out.println(w+"的二進制是"+sw);System.out.println(v+"帶符號右移一位的二進制是"+sv1+",變為"+v1);System.out.println(w+"帶符號右移一位的二進制是"+sw1+",變為"+w1);System.out.println(v+"不帶符號右移一位的二進制是"+sv2+",變為"+v2);System.out.println(w+"不帶符號右移一位的二進制是"+sw2+",變為"+w2);int i = 3; // 二進制是11int j = 2; // 二進制是10int c1= ((i | j) ^ (i & j)) << 2 >>> 1;//3^2 = 1 (01),1<<2 = 2 (100),4>>>1 = 2 (10)System.out.println(c1);} >>為帶符號右移,>>>為不帶符號右移 當帶符號右移(>>)時,第一位原來是什么就補什么,負數原來第一位是1,右移后補1,正數原來第一位0,右移補0, 所以帶符號右移數字的符號不變; 但是,當不帶符號右移(>>>)時,負數移動后,第一位前會補0,負數就會變成一個正數 對于左移,無帶不帶符號之分, 不管是正數還是負數,移位后最左端都是補0,(沒有不帶符號左移)總結
以上是生活随笔為你收集整理的java中的操作符(位操作符>>与>>>的区别)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小于n与n互质的所有数的和(欧拉函数+快
- 下一篇: hihocoder#1041 : 国庆出