Java的位元運算符 與(&)、非(~)、或(|)、異或(^) 的某些妙用。

來源:互聯網
上載者:User

 

 

有時候,我們需要判斷幾個值是否全部大於0,或者全部小於0,對於剛學編程不久,或許我們會選擇逐一判斷。

例如:

 

 

public boolean checkPositiveInteger(int a,int b,int c){

 

return (a>0&&b>0&&c>0);

}

 

 

咋一看這個程式好像沒什麼問題,運行起來也很正常,但是,作為程式員的我們必須儘可能地追求完美。

 

 

大家都應該知道|是什麼意思,從二進位的角度上說,只要在這幾個數同樣的位上有一個是1,結果就是1。

負數的符號位用1來表示,因此如果一個數是負數那麼任何數與這個數進行或(|)運算,都是負數。因此,這個程式可以修改為:

 

 

 

public boolean checkPositiveInteger(int a,int b,int c){

 

return (a|b|c)>0;

}

 

如此一來,程式優雅而高效。

 

同理。大家可以嘗試其它運算子得到更多的結論。


 

我在這裡拋磚引玉,給出一些簡單的結論:

-1|任何數都得-1(因為-1的補碼全部是1)

負數&任何正數都為正數

負數|任何正數都得負數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.