很多語言都是采用 ~ 作為按位取反運算符,Go 里面采用的是 ^ 。
創新互聯專注于新寧網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供新寧營銷型網站建設,新寧網站制作、新寧網頁設計、新寧網站官網定制、微信小程序開發服務,打造新寧網絡公司原創品牌,更為您提供新寧網站排名全網營銷落地服務。
如果作為二元運算符,^ 表示按位異或,即:對應位相同為 0,相異為 1。
操作符 ^,按位置零,例如:z = x ^ y,表示如果 y 中的 bit 位為 1,則 z 對應 bit 位為 0,否則 z 對應 bit 位等于 x 中相應的 bit 位的值。
對于有符號的整數來說,是按照補碼進行取反操作的(快速計算方法:對數 a 取反,結果為 -(a+1) ),對于無符號整數來說就是按位取反
計算過程
以3為例? 3在內存中補碼為 0*** 0011
取反? ? ? ? ? ? 1*** 1100
-1操作? ? ? ? ? 1*** 1011
除符號位取反? ? 1*** 0100 結果為-4
-------------------------------------------
以9為例 9在內存中補碼為 0*** 1001
取反? ? ? ? ? ? 1*** 0110
-1操作? ? ? ? ? 1*** 0101
除符號位取反? ? 1*** 1010 結果為-10
-------------------------------------------
以-5為例 -5在內存中為的補碼為 1*** 1011
為什么呢
-5源碼? ? ? ? ? 1*** 0101
除符號取反? ? ? 1*** 1010
+1操作? ? ? ? ? 1*** 1011
-------------------------------------------
那么-5取反怎么算
補碼 1***1011取反為 0***0100
因為符號位為0,所以是正數了,正數的補碼反碼源碼都是一個,所以是4
===================================
再看-1
-1源碼? ? ? ? ? 1*** 0001
除符號取反? ? ? 1*** 1110
+1操作? ? ? ? ? 1*** 1111
補碼 1*** 1111 取反為 0*** 0000
因為符號位為0,所以是正數了,正數的補碼反碼源碼都是一個,所以是0
go語言取反輸出的例子看這里
運算符用于在程序運行時執行數學或邏輯運算。
1.算術運算符
Go 語言的算術運算符如圖,假設A值為10,B值為20。
2.關系運算符
Go 語言的關系運算符如圖,假設A值為10,B值為20。
3.邏輯運算符
Go 語言的邏輯運算符如圖。假定A值為True,B值為False。
4.位運算符
位運算符對整數在內存中的二進制位進行操作。
位運算符比一般的算術運算符速度要快,而且可以實現一些算術運算符不能實現的功能。如果要開發高效率程序,位運算符是必不可少的。
Go 語言的位運算符如圖。假定 A = 60,B = 13,其二進制數轉換如下。
A = 0011 1100
B = 0000 1101
5.賦值運算符
Go 語言的賦值運算符如圖。
6.其他運算符
Go 語言的其他運算符如圖。
運算符的優先級
所謂優先級,就是當多個運算符出現在同一個表達式中時,先執行哪個運算符。
1,go的變量聲明順序是:”先寫變量名,再寫類型名“,此與C/C++的語法孰優孰劣,可見下文解釋:
2,go是通過package來組織的(與python類似),只有package名為main的包可以包含main函數,一個可執行程序有且僅有一個main包,通過import關鍵字來導入其他非main包。
3,可見性規則。go語言中,使用大小寫來決定該常量、變量、類型、接口、結構或函數是否可以被外部包含調用。根據約定,函數名首字母小寫即為private,函數名首字母大寫即為public。
4,go內置關鍵字(25個均為小寫)。
5,函數不用先聲明,即可使用。
6,在函數內部可以通過 := 隱士定義變量。(函數外必須顯示使用var定義變量)
7,go程序使用UTF-8編碼的純Unicode文本編寫。
8,使用big.Int的陷阱:
9,從技術層面講,go語言的語句是以分號分隔的,但這些是由編譯器自動添加的,不用手動輸入,除非需要在同一行中寫入多個語句。沒有分號及只需少量的逗號和圓括號,使得go語言的程序更容易閱讀。
10,go語言只有一個循環結構——for循環。
11,go里的自增運算符只有——“后++”
12,go語言中的slice用法類似python中數組,關于slice的詳細用法可見:
13,函數也是一個值,使用匿名函數返回一個值。
14,函數閉包的使用,閉包是一個匿名函數值,會引用到其外部的變量。
本文介紹一些Go語言的基礎語法。
先來看一個簡單的go語言代碼:
go語言的注釋方法:
代碼執行結果:
下面來進一步介紹go的基礎語法。
go語言中格式化輸出可以使用 fmt 和 log 這兩個標準庫,
常用方法:
示例代碼:
執行結果:
更多格式化方法可以訪問中的fmt包。
log包實現了簡單的日志服務,也提供了一些格式化輸出的方法。
執行結果:
下面來介紹一下go的數據類型
下表列出了go語言的數據類型:
int、float、bool、string、數組和struct屬于值類型,這些類型的變量直接指向存在內存中的值;slice、map、chan、pointer等是引用類型,存儲的是一個地址,這個地址存儲最終的值。
常量是在程序編譯時就確定下來的值,程序運行時無法改變。
執行結果:
執行結果:
Go 語言的運算符主要包括算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符以及指針相關運算符。
算術運算符:
關系運算符:
邏輯運算符:
位運算符:
賦值運算符:
指針相關運算符:
下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯用,這里不做介紹。
if語法格式如下:
if ... else :
else if:
示例代碼:
語法格式:
另外,添加 fallthrough 會強制執行后面的 case 語句,不管下一條case語句是否為true。
示例代碼:
執行結果:
下面介紹幾種循環語句:
執行結果:
執行結果:
也可以通過標記退出循環:
--THE END--
網站欄目:go語言運算 go語言運算符優先級最高的是
轉載注明:http://vcdvsql.cn/article30/ddcceso.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、標簽優化、自適應網站、網站排名、全網營銷推廣、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯