亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

詳解基于john Carmark的密碼

2020-02-24 14:32:21
字體:
供稿:網(wǎng)友

? ? ? 密碼是一種用來混淆的技術(shù),而John是一款免費(fèi)開源軟件,基于對(duì)字典密碼的破解,很多人認(rèn)為改變計(jì)算技術(shù)的是9個(gè)算法,這種算法是John Carmark研發(fā)的,你對(duì)john Carmark的密碼了解嗎?不了解的朋友們現(xiàn)在小編為你詳解基于john Carmark的密碼。

有人在Quake III的源代碼里面發(fā)現(xiàn)這么一段用來求平方根的代碼:

/*================SquareRootFloat================*/

float SquareRootFloat(float number) {
??? long i;
??? float x, y;
??? const float f = 1.5F;
??? x = number * 0.5F;
??? y? = number;
??? i? = * ( long * ) &y;
??? i? = 0x5f3759df - ( i >> 1 );? //注意這一行
??? y? = * ( float * ) &i;
??? y? = y * ( f - ( x * y * y ) );
??? y? = y * ( f - ( x * y * y ) );
??? return number * y;
}

x5f3759df? 這是個(gè)什么東西? 學(xué)過數(shù)值分析就知道,算法里面求平方根一般采用
的是無限逼近的方法,比如牛頓迭代法,抱歉當(dāng)年我數(shù)值分析學(xué)的太爛,也講不清楚
。簡單來說比如求5的平方根,選一個(gè)猜測值比如2,那么我們可以這么算

/2 = 2.5; 2.5+2/2 = 2.25; 5/2.25 = xxx; 2.25+xxx/2 = xxxx ...
這樣反復(fù)迭代下去,結(jié)果必定收斂于sqrt(5),沒錯(cuò),一般的求平方根都是這么算的
。而卡馬克的不同之處在于,他選擇了一個(gè)神秘的猜測值0x5f3759df作為起始,使得
整個(gè)逼近過程收斂速度暴漲,對(duì)于Quake III所要求的精度10的負(fù)三次方,只需要一
次迭代就能夠得到結(jié)果。

好吧,如果這還不算牛b,接著看。

普渡大學(xué)的數(shù)學(xué)家Chris Lomont看了以后覺得有趣,決定要研究一下卡馬克弄出來的
這個(gè)猜測值有什么奧秘。Lomont也是個(gè)牛人,在精心研究之后從理論上也推導(dǎo)出一個(gè)
最佳猜測值,和卡馬克的數(shù)字非常接近, 0x5f37642f??R克真牛,他是外星人嗎?


傳奇并沒有在這里結(jié)束。Lomont計(jì)算出結(jié)果以后非常滿意,于是拿自己計(jì)算出的起始
值和卡馬克的神秘?cái)?shù)字做比賽,看看誰的數(shù)字能夠更快更精確的求得平方根。結(jié)果是
卡馬克贏了... 誰也不知道卡馬克是怎么找到這個(gè)數(shù)字的。

最后Lomont怒了,采用暴力方法一個(gè)數(shù)字一個(gè)數(shù)字試過來,終于找到一個(gè)比卡馬克數(shù)
字要好上那么一丁點(diǎn)的數(shù)字,雖然實(shí)際上這兩個(gè)數(shù)字所產(chǎn)生的結(jié)果非常近似,這個(gè)暴
力得出的數(shù)字是0x5f375a86。

Lomont為此寫下一篇論文,"Fast Inverse Square Root"。

我把這個(gè)函數(shù)用C#就行了一下改寫:

?

using System;
?using System.Collections.Generic;
?using System.Text;

?namespace ConsoleApplication1
?{
???? class Program
???? {
???????? static void Main(string[] args)
??????? {
??????????? Console.WriteLine("Carmark's method:");
??????????? Console.WriteLine(SquareRootFloat(3.0f).ToString());
??????????? Console.WriteLine("Use Math.Sqrt() method:");
??????????? Console.WriteLine(((float)Math.Sqrt(3.0)).ToString());
??????????? Console.Read();
??????? }

?

??????? private static float SquareRootFloat(float number)
??????? {

??????????? long i;
??????????? float x, y;
??????????? const float f = 1.5F;
??????????? x = number * 0.5F;
??????????? y? = number;
??????????? unsafe
??????????? {
??????????????? i? = * ( long * ) &y;
??????????????? i? = 0x5f3759df - ( i >> 1 );? //注意這一行
??????????????? y? = * ( float * ) &i;
??????????? }
??????????? y? = y * ( f - ( x * y * y ) );
??????????? y? = y * ( f - ( x * y * y ) );
??????????? return number * y;
??????? }
??? }
}

?


?第32、33行用了兩次牛頓迭代法,以達(dá)到一定的精度,當(dāng)然你也可以自己控制精度,求出來的是y的平方根的倒數(shù),所以最后返回為number*y.

?

SquareRootFloat函數(shù)最關(guān)鍵的一句就是 i=0x5f3759df-(i>>1);
以下是對(duì)它的部分解釋:

牛頓迭代法最關(guān)鍵的地方在于估計(jì)第一個(gè)近似根。如果該近似根與真根足夠靠近的話,那么只需要少數(shù)幾次迭代,就可以得到滿意的解。

接著,我們要設(shè)法估計(jì)第一個(gè)近似根。這也是上面的函數(shù)最神奇的地方。它通過某種方法算出了一個(gè)與真根非常接近的近似根,因此它只需要使用一次迭代過程就獲得了較滿意的解。它是怎樣做到的呢?所有的奧妙就在于這一行:

i = 0x5f3759df - (i >> 1);?// 計(jì)算第一個(gè)近似根

超級(jí)莫名其妙的語句,不是嗎?但仔細(xì)想一下的話,還是可以理解的:float類型的數(shù)據(jù)在32位系統(tǒng)上是這樣表示的。

bits:31 30 ... 031:符號(hào)位30-23:共8位,保存指數(shù)(E)22-0:共23位,保存尾數(shù)(M)

所以,32位的浮點(diǎn)數(shù)用十進(jìn)制實(shí)數(shù)表示就是:M*2^E。開根然后倒數(shù)就是:M^(-1/2)*2^(-E/2)。現(xiàn)在就十分清晰了。語句i>>1其工作就是將指數(shù)除以2,實(shí)現(xiàn)2^(E/2)的部分。而前面用一個(gè)常數(shù)減去它,目的就是得到M^(1/2)同時(shí)反轉(zhuǎn)所有指數(shù)的符號(hào)。

? ? ? 看了以上詳解基于john Carmark的密碼內(nèi)容后你是否明白了呢?如果你還想了解更多相關(guān)內(nèi)容就請(qǐng)關(guān)注武林技術(shù)頻道吧。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

亚洲国产另类精品专区| 国产a∨精品一区二区三区仙踪林| 天堂中文字幕——hd| 国产精品无码久久久久一区二区| 国产精品美女久久福利网站| 日本午夜精品一区二区| 97在线观看免费视频| 欧美福利视频一区| 2020日本不卡一区二区视频| 欧美jizz18hd性欧美| 日韩欧美第一页| 性久久久久久| 日韩一区二区三区三四区视频在线观看| 伊人国产在线| 久草视频这里只有精品| 欧美顶级xxxxbbbb| 日韩av手机在线免费观看| 狠狠色2019综合网| 五月开心婷婷久久| 日本jizz中国| 好看的日韩精品视频在线| 最新黄色片网站| 国产视频手机在线观看| 少妇人妻无码专区视频| 韩日毛片在线观看| 国产 欧美在线| 亚洲中文字幕久久精品无码喷水| 精品国内自产拍在线观看视频| 国产精品igao| 欧美日韩国产经典色站一区二区三区| 欧美日韩在线直播| 久久国产露脸精品国产| 九九九热精品免费视频观看网站| 久久久久久一区二区| 欧美日韩中文字幕视频| 丁香激情视频| 99re免费视频精品全部| 综合欧美一区二区三区| 欧美丰满少妇人妻精品| 99久re热视频精品98| 三级在线免费观看| 三日本三级少妇三级99| 国产精品久久久久久久久久久免费看| 国产视频一区在线观看| 欧美一区二区三区婷婷月色| 99re6在线视频| 国产精品国产三级国产普通话蜜臀| 日韩不卡免费高清视频| 影音先锋中文字幕第一页| 国产精品亚洲一区二区三区在线| 一级特黄视频| 黑人糟蹋人妻hd中文字幕| 色久视频在线播放| 日韩欧美黄色大片| 国产成人精品免费视频大全最热| 黄色高清视频网站| 欧美高清电影在线| 精品麻豆视频| 亚洲一区二区视频| 亚洲国产aⅴ天堂久久| 97碰碰碰免费公开在线视频| 一级毛片免费视频| 视频在线你懂的| 午夜免费欧美电影| 一级精品视频在线观看宜春院| 久久午夜影视| 一本色道久久88综合日韩精品| 91精品欧美综合在线观看最新| 国产深夜视频在线观看| 亚洲黄色三级视频| 黄色免费影视| 国产chinesehd精品露脸| 在线观看一区二区视频| 欧美成人伊人久久综合网| 国产在线观看福利| 精品国产日韩欧美| 天天综合狠狠精品| 九九热在线播放| 男女污污的视频| 日韩高清国产一区在线| 免费永久在线观看黄网| 久久久精彩视频| 国产在线观看91精品一区| 北条麻妃一区二区三区在线观看| 精品视频在线播放免| 欧美疯狂做受xxxx富婆| 午夜在线视频观看日韩17c| 欧美天堂在线观看| av电影院在线看| 国产一区二区三区高清播放| 婷婷色在线观看| 亚洲狼人综合干| 欧美性猛交丰臀xxxxx网站| 免费永久在线观看黄网| 中文字幕美女视频| 国产精品盗摄一区二区三区| www.91视频.com| 久草福利资源站| 蜜桃网站成人| 日韩大片在线观看| 在线播放91灌醉迷j高跟美女| 久久久久一本一区二区青青蜜月| 亚洲精品永久免费| 精品免费日韩av| 欧美激情一级二级三级在线视频| av成人免费网站| 久久亚洲精品毛片| 久草免费福利在线| 欧美亚洲日本在线| 欧美日韩视频一区二区三区| 熟女少妇精品一区二区| 中文字幕亚洲一区二区va在线| 国产精品拍拍拍| 亚欧洲精品视频| 国模无码大尺度一区二区三区| 欧美freesex8一10精品| 51午夜精品| 久久超碰97中文字幕| 全彩无遮拦全彩口工漫画全彩| 中文字幕在线观看高清| 国产精品久久久久久影视| 韩国三级在线播放| 久草在线看片| 国产伦精品一区二区三区视频| 亚洲精品aaaa| 欧美一级成年大片在线观看| 亚洲丝袜在线视频| 91视频网页| 日韩激情av在线播放| 国产成人三级在线观看| 一区二区久久久久| 国产黄在线观看免费观看不卡| 91精品国产色综合久久久蜜香臀| 在线观看免费黄网站| 一区二区三区不卡在线| 国内自拍一区| 国产精品21p| 人妻丰满熟妇av无码区app| 久久免费区一区二区三波多野| 欧美图区在线视频| 在线免费三级电影网站| 国产乱国产乱老熟300部视频| 中文字幕日韩一区二区三区| 久久精品中文字幕一区二区三区| 亚洲第一黄色| 免费全黄无遮挡裸体毛片| xxx电影网| 亚洲国内在线| 久久久这里只有精品视频| 牛夜精品久久久久久久99黑人| 天天操夜夜欢| 日韩在线视频一区二区三区| 伊人精品综合| 超碰在线播放91| 日本中文字幕免费在线观看| 精品国产91乱高清在线观看| 国产男女在线观看| 欧美一区成人| bt欧美亚洲午夜电影天堂| youjizz.com日本| 亚洲欧美日韩久久| 丰满放荡岳乱妇91ww| www.性欧美| 岛国av一区二区| 免费在线观看一级片| 国产在线拍揄自揄拍| 最近最新mv在线观看免费高清| 图片区小说区国产精品视频| 91产国在线观看动作片喷水| 国产农村妇女精品一区二区| 亚洲av无码国产精品永久一区| 国产日韩亚洲欧美精品| 男人舔女人下部高潮全视频| 亚洲香蕉成视频在线观看| 亚洲激情在线观看视频| 欧美又大又粗又长| 日韩av色在线| 免费三级欧美电影| 亚洲一区二区三区中文字幕| 国产一区在线视频观看| 亚洲大片免费看| 天堂va久久久噜噜噜久久va| 成人全视频在线观看在线播放高清| 国产精品久久777777| 97人妻精品一区二区三区视频| 国产你懂的在线观看| 一区二区小说| 久久久福利影院| 中文字幕一区二区精品区| 国产日产欧美视频| 国产在线一区二区综合免费视频| 天天操夜夜干| 图片区 小说区 区 亚洲五月| 性欧美videos白嫩| 精品欧美一区二区三区在线观看| 中国一级大黄大黄大色毛片| 欧美jizz18| 九一国产精品| 中文字幕电影一区| 国产黄色小视频在线| 欧美日韩高清一区| 久久精品久久久久久久| 99久久精品无免国产免费| 日韩精品视频一区二区三区| 日本成人性视频| 在线日本制服中文欧美| 日韩av电影在线免费播放| 伊人影院蕉久影院在线观看| 久久九九精品视频| 波多野结衣之无限发射| 欧美日韩三级一区二区| 成人午夜电影久久影院| 欧美精品少妇videofree| 欧美在线视频免费播放| 手机看片福利日韩| 国产不卡视频在线播放| 精品国精品国产自在久不卡| 久久久久久久久久网| 一区二区三区免费视频网站| 5月丁香婷婷综合| 在线观看wwwxxxx| 日韩成人精品在线观看| 国产精品揄拍100视频| 国产偷国产偷精品高清尤物| 久久久男人天堂| 久草资源站在线观看| 国产高清一区二区三区| 人与牲动交xxxbbb| 精品人伦一区二区色婷婷| 欧美精品羞羞答答| 日韩久久电影| 91社区在线| av电影天堂一区二区在线观看| 久久r热视频| 日韩免费观看视频| 国产精品久久久久久久久免费樱桃| 黄色三级视屏| 日韩免费一区| 久久一区亚洲| 91免费在线播放| 国产99精品一区| 久久99热精品这里久久精品| 伊人成人在线观看| 97中文在线观看| 性欧美激情精品| 777奇米888色狠狠俺也去| 精品久久久久久久久久久久久久久| 国产99精品视频| 欧美电影h版| 成人福利视频网| 粉嫩精品一区二区三区在线观看| 欧美有码在线视频| 国产成人精品日本亚洲专区61| 激情综合丁香五月| 国产精品久久久高清免费| 性做爰过程免费播放| 日韩不卡一区| 免费视频成人| 欧美视频福利| 国产精品入口夜色视频大尺度| 日韩国产在线观看一区| 欧美在线精品一区二区三区| 国产69精品一区二区亚洲孕妇| 亚洲一区久久| 青青青草网站免费视频在线观看| 黄色av网址在线观看| 成人免费在线看片| 亚洲一二三不卡| 黑人巨大精品欧美一区二区| 99riav视频一区二区| 精品日韩99亚洲| 精品一区二区三区在线| 亚洲福利电影| 国产精品久久久久婷婷二区次| 久草成人在线视频| 中文字幕亚洲乱码| 国产91沈先生在线播放| 免费成年人视频在线观看| 成人18视频| 国产成人精品一区二区三区网站观看| 天天操天天射天天舔| 日本天码aⅴ片在线电影网站| 99精品免费观看| 国产欧美在线观看视频| 欧美在线性爱视频| 99久久免费国产| 欧美一区午夜视频在线观看| 国产福利一区视频| 给我看免费高清在线观看| 91久久线看在观草草青青| 少妇高潮av久久久久久| 欧美一区二区三区四区夜夜大片| 风间由美一区二区三区在线观看| 欧美精品丝袜久久久中文字幕| 蜜桃视频在线观看www社区| 亚洲国产果冻传媒av在线观看| 亚洲不卡中文字幕无码| 在线观看视频免费一区二区三区| 在线一区二区三区四区五区| 性欧美videosex高清少妇| 久久精品日产第一区二区三区乱码| 毛片精品免费在线观看| 麻豆精品视频| 老太做爰xxxx| 国产农村妇女毛片精品久久| 亚洲精品久久久久久久久久久久| 九九热这里只有| 国产综合色一区二区三区| 人妻丰满熟妇av无码区app| 国产高清中文字幕在线| 久久影院100000精品| 国产精品扒开腿做爽爽爽a片唱戏| 69久成人做爰电影| 欧美电影完整版在线观看| 91麻豆精品国产91久久久使用方法| 外国成人直播| 久久夜夜久久| 久久黄色片视频| 国产乱码精品一区二区三区四区| 美女视频网站在线观看| 久久丫精品忘忧草西安产品| 成人午夜电影网站| 免费看国产精品一二区视频| 五月天丁香婷| 欧美综合在线视频| 亚洲2020天天堂在线观看| 国产精品爱啪在线线免费观看| 国语对白精品一区二区|