運算符用于在程序運行時執(zhí)行數(shù)學或邏輯運算。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供中山網(wǎng)站建設(shè)、中山做網(wǎng)站、中山網(wǎng)站設(shè)計、中山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、中山企業(yè)網(wǎng)站模板建站服務,十年中山做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務。
1.算術(shù)運算符
Go 語言的算術(shù)運算符如圖,假設(shè)A值為10,B值為20。
2.關(guān)系運算符
Go 語言的關(guān)系運算符如圖,假設(shè)A值為10,B值為20。
3.邏輯運算符
Go 語言的邏輯運算符如圖。假定A值為True,B值為False。
4.位運算符
位運算符對整數(shù)在內(nèi)存中的二進制位進行操作。
位運算符比一般的算術(shù)運算符速度要快,而且可以實現(xiàn)一些算術(shù)運算符不能實現(xiàn)的功能。如果要開發(fā)高效率程序,位運算符是必不可少的。
Go 語言的位運算符如圖。假定 A = 60,B = 13,其二進制數(shù)轉(zhuǎn)換如下。
A = 0011 1100
B = 0000 1101
5.賦值運算符
Go 語言的賦值運算符如圖。
6.其他運算符
Go 語言的其他運算符如圖。
運算符的優(yōu)先級
所謂優(yōu)先級,就是當多個運算符出現(xiàn)在同一個表達式中時,先執(zhí)行哪個運算符。
很多語言都是采用 ~ 作為按位取反運算符,Go 里面采用的是 ^ 。
如果作為二元運算符,^ 表示按位異或,即:對應位相同為 0,相異為 1。
操作符 ^,按位置零,例如:z = x ^ y,表示如果 y 中的 bit 位為 1,則 z 對應 bit 位為 0,否則 z 對應 bit 位等于 x 中相應的 bit 位的值。
對于有符號的整數(shù)來說,是按照補碼進行取反操作的(快速計算方法:對數(shù) a 取反,結(jié)果為 -(a+1) ),對于無符號整數(shù)來說就是按位取反
計算過程
以3為例? 3在內(nèi)存中補碼為 0*** 0011
取反? ? ? ? ? ? 1*** 1100
-1操作? ? ? ? ? 1*** 1011
除符號位取反? ? 1*** 0100 結(jié)果為-4
-------------------------------------------
以9為例 9在內(nèi)存中補碼為 0*** 1001
取反? ? ? ? ? ? 1*** 0110
-1操作? ? ? ? ? 1*** 0101
除符號位取反? ? 1*** 1010 結(jié)果為-10
-------------------------------------------
以-5為例 -5在內(nèi)存中為的補碼為 1*** 1011
為什么呢
-5源碼? ? ? ? ? 1*** 0101
除符號取反? ? ? 1*** 1010
+1操作? ? ? ? ? 1*** 1011
-------------------------------------------
那么-5取反怎么算
補碼 1***1011取反為 0***0100
因為符號位為0,所以是正數(shù)了,正數(shù)的補碼反碼源碼都是一個,所以是4
===================================
再看-1
-1源碼? ? ? ? ? 1*** 0001
除符號取反? ? ? 1*** 1110
+1操作? ? ? ? ? 1*** 1111
補碼 1*** 1111 取反為 0*** 0000
因為符號位為0,所以是正數(shù)了,正數(shù)的補碼反碼源碼都是一個,所以是0
go語言取反輸出的例子看這里
放在函數(shù)外直接使用
var name string = "小明"
或者直接
var name= "小明"
左移運算符()
將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。
例:a = a 2 將a的二進制位左移2位,右補0,
左移1位后a = a * 2;
若左移時舍棄的高位不包含1,則每左移一位,相當于該數(shù)乘以2。
右移運算符()
將一個數(shù)的各二進制位全部右移若干位,正數(shù)左補0,負數(shù)左補1,右邊丟棄。
操作數(shù)每右移一位,相當于該數(shù)除以2。
例如:a = a 2 將a的二進制位右移2位,
左補0 or 補1 得看被移數(shù)是正還是負。