Java邏輯運算符"&","&&","|","||"

  邏輯運算符用於鏈接布爾型表達式。在Java中不一樣於數學的邏輯表達 3<X<5 ,java 中應該寫成 x>3 & x<5  java

  "&" 和"&&" 的區別; spa

   單個"&",左邊不管真假,右邊都進行計算。 數學

   雙個"&",左邊爲假,右邊不進行計算。 變量

  "|"和"||" 的區別; 技巧

   單個"|",左邊不管真假,右邊都進行計算。 二進制

   雙個"|",左邊爲真,右邊不進行計算。 co

    "|"和"&" 作位運算 位運算

    二進制進行|位運算,只有0|0時候爲0 ,其餘爲1,好比6|5 先把6和5換成二進制。6的二進制爲110,5的二進制爲101 那麼用位運算0|0得0 只要有1得1,算出爲111,111換成十進制爲7,全部6|5等於7 運算符

    二進制進行&位運算,只有1&1得1,其餘得0,同理可得6&5算出二進制得100,100換成十進制爲4

     "^"異或運算和"~"反碼

   任何相同二進制異或運算都得0,1^1=0,0^0=0,不相同的異或運算都得1,1^0=1,0^1=1。同理6^5的011

那麼011的十進制是3。提示一個數異或兩次變回自己。好比6^5^5的 110,101,101。先得011,再得110全部又變回原來的數值,此技巧能夠用來轉換數值,不須要第3個變量便可兩個變量值互轉。

    反碼:二進制進行反碼計算時。1變成0,0變成1。舉例子~6,6的二進制是110在機器上補足32位在110以前補碼0。那麼反碼爲111.....001,此時的反碼減去1得111.....111000,那麼原反碼減去相減的碼獲得0000....000111此時的十進制爲-7那麼加上原來減去的1獲得-7+1就是~6了。(這個我也不是很懂。大牛們指正下

    "<<"左移">>"右移">>>"無符號右移

    左移:空缺補0,被移除的高位丟棄,空缺位補0,好比32位二進制 0000....00011左移3位變成了0...00011xxx,則xxx補足000便可。規律左移是基數乘以2的移位冪次方,好比3<<2則是3*2*2也就是3乘以2的2次冪。

    右移:最高位是什麼就補什麼。高位是1補1,是0就補0.,規律左移是基數除以2的移位冪次方,好比3>>1則是3/2也就是3除以2的1次冪。

    無符號右移:不管高位是0仍是1都補0

相關文章
相關標籤/搜索