當前位置: 華文問答 > 數碼

為什麽我們提到的網速在上傳、下載時要除以8?

2013-06-30數碼

這個問題的深層關系是:電腦和通訊是兩個不同行業,有不同的關註點。

在通訊業,我們關心的是數據如何從A傳到B。那麽,作為二進制數據,只能表達1和0的bit是天然的基礎單位。而且這個bit,剛好還能和實體層面的脈沖訊號相互對應(嚴格來說,脈沖訊號是和碼元才是一一對應,和bit是成比例對應。不過為了不過多引入其他諸如編碼、碼元進制等概念,就先這麽說吧)。接下來做什麽訊號衰減、訊號幹擾、訊噪比、訊號轉發之類的東西,都很方便。所以,通訊行業拿著一個器材說我這台器材收發速率是「100bps」,實際上它想說的是:說這台器材一秒鐘能收發/處理「100個訊號」——當然,我們從電腦的角度來說,就是它一秒鐘收發/處理「100個bit」——但這兩種說法雖然意思相近,但實質內涵是有不同的。

但是在電腦業,雖然我們關註的也是1和0組成的二進制數據,但我們其實關心的是這些1和0所表達的含義。那麽,一般情況下,只能存1和0的一個bit是表達不了什麽特別有意義的內容的。所以,一般都用8個bit捆成一個byte來作為基礎單位——好歹一個byte,存字元能放得下一個ascii字元,存數值能存0-255。甚至很多時候,我們還覺得一個byte也不夠用,就繼續捆成2byte、4byte、8byte來用。

所以,isp營運商,作為通訊業中的一員,他們在采購器材、設計規劃通訊網絡等等時候,自然使用的是通訊業的概念和指標。

而你在電腦裏看到的和顯示的數據,自然又是按照電腦習慣的標準來。

看了不少其他回答,好像還是有不少覺得就是個除八乘八的單位轉換問題。

那我就補充一下一些不被人註意到的小歷史吧。

其實bit這個概念,要遠遠早於電腦出現的年代。大家看過諜戰片,都應該對特工們偷偷發電報的那個滴滴答答的情節有印象吧?那裏的每個滴答,就是一個bit,分別代表1和0(專業稱謂是:dit和dah——不要問他們兩和1/0到底誰代表誰,因為那個年代,人們不習慣用數碼來代表二進制)。

而實際上,bit的出現,就是跟隨遠端電報業而出現的。最早的電報,大約在鴉片戰爭年代,大約在洋務運動年間傳入了中國。到了甲午年代,我們看歷史書上常見的什麽「xxx通電下野」之類的「通電」,其實就是「透過電報廣而告之」的操作——也就是說在那個年代,中國也已經有了完善的(有線)電報網絡了。

而在那個年代,因為都是人工按出來的滴答,業內關註的速率其實不是bps,而是bpm(每分鐘多少bit)。我的某位長輩,建國初期先是當通訊兵,後來進入郵電。他們當年的職業技能大賽的永遠不變的一個專案,就是比誰的bpm更高(包括發報和聽報)。

說完了bit的起源,那就說說編碼——因為大家都關心的是內容,而不是bit:

在電報盛行的那個年代,國際上最通行的字元編碼就是摩爾斯碼——大家熟知的代表緊急情況的SOS就是。但應該極少人留意到,摩爾斯碼它就不是8bit代表一個字元的。它甚至已經極為超前的使用上了變長編碼——英文字元1-4bit,數碼統一是5bit。說來有意思,我當年宿舍有個哥們,在研究透徹了unicode編碼後,頓悟,大贊這種變長編碼乃前無古人後無來者的登峰造極之作。然後,捉狹的我就打印了份摩爾斯碼表給他……

而另一個我們熟知的編碼:ASCII碼,有兩點冷知識:首先是它不是一個8bit編碼,而是一個7bit編碼。其次就是,它的出現同樣早於電腦。所以,是的,它最早也是用於電報業的。它之所以能替代摩爾斯碼,主要是那個年代電報公司已經基本不再用人工按出滴答了,已經是按鍵盤上的字母,然後機器自動轉換為滴答編碼發送,所以定長(便於機器處理)且能容納更多字元的編碼自然就更受歡迎。

那麽,到了電腦出現後,就終於出現1byte=8bit了嗎?不好意思,還是沒有。早期電腦,1byte=Nbit的N的範圍,從7-10都有——應該不會有比7小的(畢竟連ascii碼都放不下的,造出來也不大可能受歡迎),但可能有更冷門的會超過10也說不定。而受此影響。在早期就出現的電腦程式語言:C和C++的標準檔中,同樣明確說了這是留給各廠商自行決定的:A byte is composed of a contiguous sequence of bits, the number of which is implementation defined. ——這個規定至今尚存。

而我所知道最早的,明確規定了8bit為基礎單位的,應該是互聯網協定規範裏(記得它用的還不是byte這個詞,而是octet——而octet這個詞,本身就來源於拉丁文的8)。自那以後,為了便捷的接入互聯網,以及便捷的處理互聯網報文,大家才逐步開始逐步把軟硬件設計統一到1byte=8bit這個關系上——具體時間點應該不早於80年代早期。

所以,8這個比例關系,實際上出現得非常非常非常晚(和通訊業相比),只不過因為互聯網大流行以及之後的相容性處理,導致人們對它極為熟悉而已。

總之,在通訊業看起來,你們多少個bit捆起來,那都是你們的事——當年摩爾斯碼一統天下的時候,老子就是按bit來算的。現在互聯網席卷一切,老子當然還是按bit算。說得難聽點,莫爾斯碼一統天下的時間,可比互聯網長多了。所以,城頭變幻大王旗,誰知道以後會不會又有個什麽大流行的編碼變成100bit呢?不過就算真的有那麽一天,我相信通訊業的兄弟還是會給我們一句話: 老子還是按bit算