CSI講義3--最高效的進(jìn)制是什么尊沸?

本文的核心內(nèi)容源自于Henry S. Warren的《Hacker's delight》,記錄于此贤惯,僅作為教學(xué)之用洼专。貢獻(xiàn)歸于原作者。

初學(xué)二進(jìn)制的時候孵构,老師喜歡問一個問題屁商,為何二進(jìn)制很重要?同學(xué)們喜歡這么回答:因?yàn)槎M(jìn)制非常有趣颈墅、容易理解而且更加高效蜡镶!我非常清楚雾袱,對他們而言,二進(jìn)制并不有趣帽哑,也不容易谜酒,更為重要的是,他們不知道什么進(jìn)制更加高效妻枕。原諒我的夸張僻族,大多數(shù)人(包括學(xué)計(jì)算機(jī)數(shù)十年的老手)也不見得知道什么進(jìn)制最高效。因?yàn)槁判常蠋煆膩聿唤淌雒矗覇?strong>這樣的問題有意思嗎?嗯哼愕掏,看看下面的分析再下結(jié)論吧度秘。

首先,我們先定義電路的開銷饵撑。二進(jìn)制有兩種狀態(tài)剑梳,如果把二進(jìn)制電路的開銷定為2(兩個單位開銷),那么三進(jìn)制有三種狀態(tài)滑潘,開銷就是3垢乙,四進(jìn)制有四個狀態(tài)則開銷就是4。因此语卤,我們可令b進(jìn)制電路的開銷為b追逮。

其次,b進(jìn)制如果要表達(dá)0到M范圍的值需要log_b( M + 1 )(即粹舵,以b為底對M+1求對數(shù))這么多電路钮孵。比如,如果是二進(jìn)制要表達(dá)0-255眼滤,則需要log( 256 ) = 8個比特巴席。 又比如,用十進(jìn)制表示0-999需要log_10(1000)=3個十進(jìn)制數(shù)柠偶。

接著情妖,就可以定義表達(dá)這M+1個數(shù)所使用電路的開銷,簡單的乘法得:
c = k*log_b(M+1)*b (公式1)
其中诱担,k是一個比例常數(shù)毡证,暫時可以忽略其意義。

然后蔫仙,就需要使用一點(diǎn)點(diǎn)高等數(shù)學(xué)的知識了料睛。把c理解為b的函數(shù),該函數(shù)會在導(dǎo)數(shù)為零處達(dá)到極值,因此恤煞,要對c進(jìn)行求導(dǎo)屎勘。有一個技巧就是,先對log_b(M+1)進(jìn)行換底(高中的換底公式?jīng)]有忘記吧居扒,剛高考完的大一新生們概漱?)得到以e為底的自然對數(shù)表達(dá):ln (M+1) / ln b。其好處還是明顯的喜喂,把M+1這一項(xiàng)獨(dú)立出來瓤摧。運(yùn)用鏈?zhǔn)椒▌t,整理得:
c‘ = k*ln (M+1) * (ln b - 1 )/ (ln b)^2
該公式在ln b - 1時為0玉吁,即 b為e (2.718照弥,歐拉常數(shù),又稱納皮爾常數(shù)进副,我最近才知道這個名字这揣。)時為零。因此影斑,三進(jìn)制是最高效的進(jìn)制给赞。

最后,二進(jìn)制與三進(jìn)制差別有多大呢矫户?使用公式1塞俱,很容易算:
c(2) : c(3) = 2*ln 3 : 3*ln 2 = 1.056

結(jié)論是,二進(jìn)制比三進(jìn)制稍微開銷大那么一點(diǎn)點(diǎn)吏垮。如果結(jié)合二進(jìn)制電路在實(shí)現(xiàn)上的優(yōu)勢,這點(diǎn)開銷也許就可以忽略不計(jì)罐旗。

以上分析展示了一種分析問題解決問題的典范實(shí)例膳汪,可推廣稱為通用方法,值得學(xué)習(xí)九秀。就結(jié)論本身而言遗嗽,也許還不如提出問題更有價值。

本文的分析源自于Henry S. Warren的《Hacker's delight》鼓蜒,目前是第二版痹换,有中文翻譯版(不建議購買),值得閱讀都弹,是一本內(nèi)涵深刻的算法書娇豫,盡管名字有點(diǎn)古怪。


Hacker's delight

2017年6月整理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末畅厢,一起剝皮案震驚了整個濱河市冯痢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖浦楣,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袖肥,死亡現(xiàn)場離奇詭異,居然都是意外死亡振劳,警方通過查閱死者的電腦和手機(jī)椎组,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來历恐,“玉大人寸癌,你說我怎么就攤上這事〖泄” “怎么了灵份?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長哮洽。 經(jīng)常有香客問我填渠,道長,這世上最難降的妖魔是什么鸟辅? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任氛什,我火速辦了婚禮,結(jié)果婚禮上匪凉,老公的妹妹穿的比我還像新娘枪眉。我一直安慰自己,他們只是感情好再层,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布贸铜。 她就那樣靜靜地躺著,像睡著了一般聂受。 火紅的嫁衣襯著肌膚如雪蒿秦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天蛋济,我揣著相機(jī)與錄音棍鳖,去河邊找鬼。 笑死碗旅,一個胖子當(dāng)著我的面吹牛渡处,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祟辟,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼医瘫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了旧困?” 一聲冷哼從身側(cè)響起登下,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤茫孔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后被芳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缰贝,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年畔濒,在試婚紗的時候發(fā)現(xiàn)自己被綠了剩晴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡侵状,死狀恐怖赞弥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情趣兄,我是刑警寧澤绽左,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站艇潭,受9級特大地震影響拼窥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蹋凝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一鲁纠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳍寂,春花似錦改含、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鞍爱,卻和暖如春白群,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背硬霍。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笼裳,地道東北人唯卖。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像躬柬,于是被迫代替她去往敵國和親拜轨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容