1. 程式人生 > >Go之運算符

Go之運算符

例子 需要 等於 異或 就是 pan 真假 轉換 -c

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

"&" 和"&&" 的區別:

單個"&",左邊無論真假,右邊都進行計算。

雙個"&",左邊為假,右邊不進行計算。

"|"和"||" 的區別:

單個"|",左邊無論真假,右邊都進行計算。

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

"|"和"&" 做位運算

二進制進行|位運算,只有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

Go之運算符