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