隨筆 - 1, 文章 - 0, 評論 - 0, 引用 - 0
          數據加載中……

          2014年8月31日

          java運算符1

          java位運算符包括 
          &(與)       AND 
          |(或)       OR 
          ^(異或)     XOR 
          ~(非)       NOT 

          位移運算符包括 
          >>(右移) 
          <<(左移) 
          >>>(右移,左邊空出的位以0填充) 
          顧名思義,位運算符用于位運算,那就只能對整型或者字符型進行運算。而除了~(非)是一元運算符之外其他的都為二元運算符。 

          所有位運算都會把值轉為二進制進行運算 

          &(與) 
            運算規則:0&0=0   0&1=0  1&0=0   1&1=1 
            即:兩位同時為1時,結果為1,否則為0 

            
          Java代碼  收藏代碼
          1. int a=(3&5);  
          2. System.out.println(a);  
          3. System.out.println(Integer.toBinaryString(3));   
          4. System.out.println(Integer.toBinaryString(5));   


             結果打印為 
                1 
               011 
               101 
              解析:3的二進制為011,5的二進制為101,與操作結果為001。轉為十進制是1。 


          |(或) 
                運算規則: 0|0=0   0|1=1  1|0=1   1|1=1 
               即:參加運算的兩個對象只要有一個為1,其結果就為1 

             
          Java代碼  收藏代碼
          1. int a=(3|5);  
          2. System.out.println(a);  
          3. System.out.println(Integer.toBinaryString(3));   
          4. System.out.println(Integer.toBinaryString(5));   


             結果打印為 
               7 
              011 
              101 

              解析:3的二進制位011,5的二進制位101?;虿僮鹘Y果為111。轉為10進制為7 


          ^(異或) 
              運算規則:1^0=0   0^1=1   1^0=1   1^1=0 
                   即:參加運算的兩個對象,如果兩個個相應位為“異”(值不同),則該位結果為1,否則為0 

             
          Java代碼  收藏代碼
          1. int a=(3^5);  
          2. System.out.println(a);  
          3. System.out.println(Integer.toBinaryString(3));   
          4. System.out.println(Integer.toBinaryString(5));   

              
              結果打印為 
                    6 
                 011 
                 101 

              解析:3的二進制位011,5的二進制位101?;虿僮鹘Y果為110。轉為10進制為6 


          ~(非) 
              運算規則:~1=0   ~0=1          
                  即:對一個二進制數按位取反,即0變為1,1變為0 

              ~運算符的優先級比算數運算符、關系運算符、邏輯運算符和其他運算符都高 

          <<(左移) 
              將一個運算符對象的各二進制位全部左移諾干位(左邊的二進制位丟棄,右邊補0) 
               操作數每左移一位,相當于該數乘以2 
             
          Java代碼  收藏代碼
          1. int a=(3<<2);  
          2. System.out.println(a);  
          3. System.out.println(Integer.toBinaryString(3));   
          4. System.out.println(Integer.toBinaryString(12));   

              
              結果打印為 
                   12 
                  11 
                  1100 

              解析:此運算符的意思就是把3的二進制位全部左移兩位,右邊補2個0。3的二進制位11,左移兩位后,右邊補2個0就是1100。1100轉為10進制為12。 
               說到底左移操作就相當于2的2次方×3。 每左移1位次方就增1 


          >>(右移) 
          將一個數的各二進制位全部右移諾干位,正數左補0,負數左補1,右邊丟棄。 
          操作數每右移一位,相當于該數除以2 

          Java代碼  收藏代碼
          1. int a=(9>>1);  
          2. System.out.println(a);  
          3. System.out.println(Integer.toBinaryString(9));   
          4. System.out.println(Integer.toBinaryString(4));   

              
              結果打印為 
                   4 
                  1001 
                  100 
               
              解析:9的二進制為1001,右移1位后,左正數補0,右邊丟棄。結果為 0100。轉為10進制后為4。

          posted @ 2014-08-31 23:16 小華灬打醬油 閱讀(98) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 达孜县| 武川县| 天门市| 锡林郭勒盟| 台北县| 南安市| 双峰县| 绥棱县| 夏津县| 合山市| 独山县| 木里| 房产| 静安区| 伊金霍洛旗| 惠东县| 滨州市| 南安市| 庐江县| 吴江市| 永和县| 连南| 九龙县| 东阿县| 杭锦旗| 安宁市| 西乌珠穆沁旗| 古田县| 勐海县| 鸡东县| 丰顺县| 神池县| 丰城市| 汉源县| 曲水县| 垣曲县| 长治市| 乾安县| 泰兴市| 太湖县| 建平县|