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

雪花算法(02)算法中的位運(yùn)算-創(chuàng)新互聯(lián)

前面介紹了雪花算法的理論基礎(chǔ),可以對(duì)大概的算法有個(gè)了解,但是細(xì)節(jié)上可能還是模糊,下面來說一下雪花算法中用到的位運(yùn)算。這里先介紹兩個(gè),一個(gè)是:

成都創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè),為客戶提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗(yàn),各類網(wǎng)站都可以開發(fā),高端網(wǎng)站設(shè)計(jì),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計(jì),建網(wǎng)站費(fèi)用,建網(wǎng)站多少錢,價(jià)格優(yōu)惠,收費(fèi)合理。
<<

一個(gè)是

|

<<的作用是將數(shù)字向左移動(dòng),這里的數(shù)字指的是二進(jìn)制中的數(shù),并不是字面上的長(zhǎng)整型數(shù)字,當(dāng)然移動(dòng)后數(shù)字字面值肯定發(fā)生變化,但是這里對(duì)這個(gè)操作的主要理解要放在二進(jìn)制數(shù)字向左移動(dòng)上,而不是字面值擴(kuò)大2的n次方倍。

“|” 的作用是或運(yùn)算,兩個(gè)數(shù)對(duì)應(yīng)的位上只要有一個(gè)是1就是1,這樣的官方解釋不太明顯,放在雪花算法中的作用就是合并數(shù)字,下面會(huì)詳細(xì)演示。也就是說,三個(gè)需要生成的部分,分別由三個(gè)數(shù)來生成,然后利用 <<往左移動(dòng)到對(duì)應(yīng)的位置,最后將三個(gè)數(shù)字用 | 合并。這就是雪花算法中兩個(gè)位移操作的作用。

介紹一個(gè)例子比如有三個(gè)數(shù)字,分別打印出這三個(gè)數(shù)字的二進(jìn)制形式:
雪花算法(02)算法中的位運(yùn)算

可以看到,5對(duì)應(yīng)的二進(jìn)制就是101,8對(duì)應(yīng)的2進(jìn)制就是1000,10對(duì)應(yīng)的二進(jìn)制就是1010。這三個(gè)數(shù)字轉(zhuǎn)換成二進(jìn)制后,所有的0和1自然還是在最右邊的末尾,下面就來進(jìn)行位移操作a向左移動(dòng)20位,b向左移動(dòng)10位,c不變:
雪花算法(02)算法中的位運(yùn)算

通過a和b位移結(jié)果的前后對(duì)比,可以發(fā)現(xiàn)在二進(jìn)制的形式下,位移操作的意義淺顯易懂,就是把代表值的所有數(shù)字向左移動(dòng)了對(duì)應(yīng)的位數(shù)。我們把雪花算法生成的數(shù)字也分成了三部分,這三部分可以分別按照規(guī)則生成,然后用<<操作向左移動(dòng)對(duì)應(yīng)的位數(shù),就可以到達(dá)對(duì)應(yīng)的位置,最后再合并即可。

來看一下合并的代碼:
雪花算法(02)算法中的位運(yùn)算

上面的“a|b|c”操作就是合并三個(gè)數(shù)字,怎么合并呢?就是多個(gè)64位的數(shù)字對(duì)應(yīng)的合在一起,在這64中,只要對(duì)應(yīng)位數(shù)上有一個(gè)位置是1,合并后這個(gè)位上的數(shù)字就是1,否則就是0,根據(jù)這個(gè)結(jié)果,我們看到數(shù)字d的二進(jìn)制形式確實(shí)包含了abc三個(gè)的所有數(shù)字。雖然最后的結(jié)果d是一個(gè)難以猜到的數(shù)字,但是我們進(jìn)行位運(yùn)算一定要看二進(jìn)制,不要看整數(shù)字面值,這三個(gè)數(shù)字放在了各自對(duì)應(yīng)的位數(shù)范圍內(nèi),只要三個(gè)數(shù)字的范圍不越界,也就是說a永遠(yuǎn)在從右向左20位以后,b永遠(yuǎn)在10到20之間,c永遠(yuǎn)在0到10之間,那么這三個(gè)數(shù)字就可以各管各的,并且結(jié)果是合法合理的。

當(dāng)然這種操作也是有底線的,比如b,他的數(shù)字大小轉(zhuǎn)換成2進(jìn)制后如果長(zhǎng)度比10位大,那么它就會(huì)和a互相影響,導(dǎo)致結(jié)果不可預(yù)料,這就是范圍的由來。我們?cè)賮砜紤]一下雪花算法,除了第一位0之外,第一部分是時(shí)間部分,占41位,也就是說生成的時(shí)間數(shù)字要向左移動(dòng)(64-1-41=)22位,第二部分是機(jī)器信息,占10位,也即是說代表機(jī)器信息的數(shù)字生成后要向左移動(dòng)(64-1-41-10=)12位,當(dāng)然第三部分在末尾,就不用位移了。這三部分計(jì)算出來并且向左位移完成后,直接用“|”運(yùn)算合成即可,就是我們最終要的分布式唯一id。

代碼地址:https://gitee.com/blueses/snowflake-demo 02

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

分享題目:雪花算法(02)算法中的位運(yùn)算-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.chinadenli.net/article44/djojhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管網(wǎng)站改版營(yíng)銷型網(wǎng)站建設(shè)網(wǎng)站營(yíng)銷網(wǎng)站維護(hù)品牌網(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í)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)