欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

go語(yǔ)言絕對(duì)值,go 語(yǔ)法

絕對(duì)值的講解

絕對(duì)值是指一個(gè)數(shù)在數(shù)軸上所對(duì)應(yīng)點(diǎn)到原點(diǎn)的距離,用“| |”來(lái)表示。|b-a|或|a-b|表示數(shù)軸上表示a的點(diǎn)和表示b的點(diǎn)的距離。

創(chuàng)新互聯(lián)長(zhǎng)期為超過(guò)千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為臨滄企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,臨滄網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

在數(shù)學(xué)中,絕對(duì)值或模數(shù)| x | 的非負(fù)值,而不考慮其符號(hào),即|x | = x表示正x,| x | = -x表示負(fù)x(在這種情況下-x為正),| 0 | = 0。例如,3的絕對(duì)值為3,-3的絕對(duì)值也為3。數(shù)字的絕對(duì)值可以被認(rèn)為是與零的距離。[1]

實(shí)數(shù)的絕對(duì)值的泛化發(fā)生在各種各樣的數(shù)學(xué)設(shè)置中,例如復(fù)數(shù)、四元數(shù)、有序環(huán)、字段和向量空間定義絕對(duì)值。絕對(duì)值與各種數(shù)學(xué)和物理環(huán)境中的大小,距離和范數(shù)的概念密切相關(guān)。[2]

中文名

絕對(duì)值

外文名

absolute value

別稱(chēng)

無(wú)

表達(dá)式

| a |

提出者

外爾斯特拉斯

限時(shí)折扣

初一數(shù)學(xué):15課絕對(duì)值基礎(chǔ)題易錯(cuò)題,講解透徹,零基礎(chǔ)也能輕松學(xué)

共15集

2196熱度

專(zhuān)接本數(shù)學(xué)預(yù)科課程

共10集

1830熱度

七年級(jí)上數(shù)學(xué) 絕對(duì)值與相反數(shù)

共8集

0熱度

快速

導(dǎo)航

應(yīng)用舉例計(jì)算機(jī)語(yǔ)言絕對(duì)值不等式無(wú)符號(hào)數(shù)計(jì)算求兩個(gè)數(shù)的最大值

意義

幾何意義

在數(shù)軸上,一個(gè)數(shù)到原點(diǎn)的距離叫做該數(shù)的絕對(duì)值。

表示數(shù)軸上表示a的點(diǎn)和表示b的點(diǎn)的距離。

應(yīng)用:|5|指在數(shù)軸上5與原點(diǎn)的距離,這個(gè)距離是5,所以5的絕對(duì)值是5。同樣,

指在數(shù)軸上表示-5與原點(diǎn)的距離,這個(gè)距離是5,所以-5的絕對(duì)值也是5。

指數(shù)軸上-3和-2點(diǎn)的距離,這個(gè)式子值是1。同樣

也表示3和2點(diǎn)的距離。

如何看待go語(yǔ)言泛型的最新設(shè)計(jì)?

Go 由于不支持泛型而臭名昭著,但最近,泛型已接近成為現(xiàn)實(shí)。Go 團(tuán)隊(duì)實(shí)施了一個(gè)看起來(lái)比較穩(wěn)定的設(shè)計(jì)草案,并且正以源到源翻譯器原型的形式獲得關(guān)注。本文講述的是泛型的最新設(shè)計(jì),以及如何自己嘗試泛型。

例子

FIFO Stack

假設(shè)你要?jiǎng)?chuàng)建一個(gè)先進(jìn)先出堆棧。沒(méi)有泛型,你可能會(huì)這樣實(shí)現(xiàn):

type?Stack?[]interface{}func?(s?Stack)?Peek()?interface{}?{

return?s[len(s)-1]

}

func?(s?*Stack)?Pop()?{

*s?=?(*s)[:

len(*s)-1]

}

func?(s?*Stack)?Push(value?interface{})?{

*s?=?

append(*s,?value)

}

但是,這里存在一個(gè)問(wèn)題:每當(dāng)你 Peek 項(xiàng)時(shí),都必須使用類(lèi)型斷言將其從 interface{} 轉(zhuǎn)換為你需要的類(lèi)型。如果你的堆棧是 *MyObject 的堆棧,則意味著很多 s.Peek().(*MyObject)這樣的代碼。這不僅讓人眼花繚亂,而且還可能引發(fā)錯(cuò)誤。比如忘記 * 怎么辦?或者如果您輸入錯(cuò)誤的類(lèi)型怎么辦?s.Push(MyObject{})` 可以順利編譯,而且你可能不會(huì)發(fā)現(xiàn)到自己的錯(cuò)誤,直到它影響到你的整個(gè)服務(wù)為止。

通常,使用 interface{} 是相對(duì)危險(xiǎn)的。使用更多受限制的類(lèi)型總是更安全,因?yàn)榭梢栽诰幾g時(shí)而不是運(yùn)行時(shí)發(fā)現(xiàn)問(wèn)題。

泛型通過(guò)允許類(lèi)型具有類(lèi)型參數(shù)來(lái)解決此問(wèn)題:

type?Stack(type?T)?[]Tfunc?(s?Stack(T))?Peek()?T?{

return?s[len(s)-1]

}

func?(s?*Stack(T))?Pop()?{

*s?=?(*s)[:

len(*s)-1]

}

func?(s?*Stack(T))?Push(value?T)?{

*s?=?

append(*s,?value)

}

這會(huì)向 Stack 添加一個(gè)類(lèi)型參數(shù),從而完全不需要 interface{}。現(xiàn)在,當(dāng)你使用 Peek() 時(shí),返回的值已經(jīng)是原始類(lèi)型,并且沒(méi)有機(jī)會(huì)返回錯(cuò)誤的值類(lèi)型。這種方式更安全,更容易使用。(譯注:就是看起來(lái)更丑陋,^-^)

此外,泛型代碼通常更易于編譯器優(yōu)化,從而獲得更好的性能(以二進(jìn)制大小為代價(jià))。如果我們對(duì)上面的非泛型代碼和泛型代碼進(jìn)行基準(zhǔn)測(cè)試,我們可以看到區(qū)別:

type?MyObject?struct?{

X?

int

}

var?sink?MyObjectfunc?BenchmarkGo1(b?*testing.B)?{

for?i?:=?0;?i??b.N;?i++?{

var?s?Stack

s.Push(MyObject{})

s.Push(MyObject{})

s.Pop()

sink?=?s.Peek().(MyObject)

}

}

func?BenchmarkGo2(b?*testing.B)?{

for?i?:=?0;?i??b.N;?i++?{

var?s?Stack(MyObject)

s.Push(MyObject{})

s.Push(MyObject{})

s.Pop()

sink?=?s.Peek()

}

}

結(jié)果:

BenchmarkGo1BenchmarkGo1-16?????12837528?????????87.0?ns/op???????48?B/op????????2?allocs/opBenchmarkGo2BenchmarkGo2-16?????28406479?????????41.9?ns/op???????24?B/op????????2?allocs/op

在這種情況下,我們分配更少的內(nèi)存,同時(shí)泛型的速度是非泛型的兩倍。

合約(Contracts)

上面的堆棧示例適用于任何類(lèi)型。但是,在許多情況下,你需要編寫(xiě)僅適用于具有某些特征的類(lèi)型的代碼。例如,你可能希望堆棧要求類(lèi)型實(shí)現(xiàn) String() 函數(shù)

golang 正負(fù)數(shù)取反

想要知道取反計(jì)算過(guò)程,首先搞懂? “原碼“,“反碼”,“補(bǔ)碼”,“取反”。

0變1,1變0

原碼是計(jì)算機(jī)機(jī)器數(shù)中最簡(jiǎn)單的一種形式,數(shù)值位就是真值的絕對(duì)值。原碼表示法在最高位為符號(hào):正數(shù)該位為0,負(fù)數(shù)該位為1,原碼又稱(chēng)帶符號(hào)的絕對(duì)值。看整數(shù)9及-9的原碼如下:

9的原碼:0000 1001

-9的原碼: 1000 1001

重點(diǎn):對(duì)于源碼,絕對(duì)值相等的正數(shù)和負(fù)數(shù)只有符號(hào)位不同。

反碼通常是用來(lái)由原碼求補(bǔ)碼或者由補(bǔ)碼求原碼的過(guò)渡碼。正數(shù)的反碼就是其原碼,負(fù)數(shù)的反碼就是將原碼除符號(hào)位以外每位取反(0變1,1變0)。例如:

9的反碼:0000 1001

-9的反碼:1111 0110

在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來(lái)表示和存儲(chǔ)。正數(shù)的原碼就是其補(bǔ)碼。負(fù)數(shù)的補(bǔ)碼是其反碼+1.例如:

9的補(bǔ)碼:0000 1001

-9的補(bǔ)碼:1111 0111

正整數(shù)的原碼、反碼、補(bǔ)碼都是一樣的。負(fù)數(shù)的反碼是除符號(hào)位其他每一位取反,負(fù)數(shù)的補(bǔ)碼是其反碼+1

首先明確一個(gè)概念,由于在計(jì)算機(jī)中二進(jìn)制都是以其補(bǔ)碼形式存放在內(nèi)存中的。所以要知道 ^9 就是對(duì) 9 的補(bǔ)碼取反,也就是說(shuō)無(wú)論是整數(shù)還是負(fù)數(shù)對(duì)其取反都是對(duì)其補(bǔ)碼取反。

正數(shù)9:

原碼為: 0000 1001

反碼為: 0000 1001

補(bǔ)碼為: 0000 1001

1. 取反結(jié)果=負(fù)數(shù)補(bǔ)碼 :0000 1001 --- (取反) 1111 0110?

注:由于 ^ 位取反操作符,對(duì)于符號(hào)位也會(huì)取反 所以這里得到一個(gè)負(fù)數(shù)的補(bǔ)碼,想要計(jì)算其真實(shí)的值。還需要將其轉(zhuǎn)換成原碼。

2. 得反碼:1111 0110? -? 1? =??1111 0101

補(bǔ)碼 = 反碼 + 1 (反推) 反碼?= 補(bǔ)碼 - 1

3. 得原碼?1111 0101 -- 1111 1010 = -10

原碼? =? 反碼取反

負(fù)數(shù)-9:

原碼為: 1111 1001

反碼為: 1111 0110

補(bǔ)碼為: 1111 0111

1. 取反結(jié)果=正數(shù)補(bǔ)碼?1111 0111 ----?0000 1000

2. 正數(shù)原碼 = 反碼 = 補(bǔ)碼 =?0000 1000 = 8

當(dāng)前題目:go語(yǔ)言絕對(duì)值,go 語(yǔ)法
網(wǎng)址分享:http://chinadenli.net/article29/dsihdch.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司企業(yè)網(wǎng)站制作定制開(kāi)發(fā)云服務(wù)器ChatGPT手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司