能否使用3的指數來減小二進位制檔案儲存的體積?

時間 2021-05-11 10:46:37

1樓:LLL ZZZ

如果你提的是壓縮演算法,跟3的指數有什麼關係?

你是沒搞清楚,數碼訊號和模擬訊號的區別吧?

數碼訊號就是二進位制的,就是可以通過兩極化的物理狀態,來精確的實現0/1的區分。

而模擬訊號,則需要細分化,分段化物理狀態。這在訊號的傳輸記錄過程中,很容易出錯。

所以現在的世界數位化了,或者說二進位製化了,能提高資訊傳輸儲存的精確度。

也就是說,如果你要在把二進位制改成3進製,你需要找到一種天然三極的物理狀態,並且讓他可以普遍化替代目前的所有二進位制物理狀態建立的數碼訊號世界。

使用二進位制的原因很簡單,通不通電就是天然的0/1,任何材料都有效。如果三進製的狀態也如此簡單的話,那麼早就用了。

2樓:qwe

按照題主的意思是只存指數?但是這樣無法表示所有的數的,例如 248,轉為3進製是 100012,按照存指數的方式還是存的是101+10+0,但是這個可以表示很多個值,因為每一位可以是0,1,2。0不寫剩下的還有1 和 2。

我想到的一種表示方法,還是參照進製表示資料的方式 。例如248轉為三進製是100012,對三進製的0/1/2進行編碼(計算機中只能儲存0或者1),分別是0/10/11,則248表示為100001011,需要9位表示,以前需要8位現在至少需要9位才能表示。

假設64位的乙個數轉為三進製,如0xFFFFFFFFFFFFFFFF,需要使用40位的三進製才能表示(3^41 >2^64>3^40)。40位三進製最差情況下需要80位來表示,最好的情況下需要40位表示。假設三進製的每一位0/1/2的概率相等,則可以40位的三進製可以使用40*2*2/3 + 40*1*/3 ≈ 66.

7位,大於60位,所以還是不合算的。

3樓:schummacher

我從硬體的角度來回答一下。

首先,三進製計算需要雙電源工藝,這就已經不好做了,導致成本增加。其次,三進製需要更高的電壓才能保證與二進位制電路有相同的容錯率,導致功耗增高。

那現在可以提出乙個問題,三進製的優點可不可以抵消掉上面的缺點。如果抵消了,足不足以有足夠的優勢讓大家放棄對老硬體的相容性。

毛子曾經做過做過三進製計算機,最終不了了之。

4樓:XZiar

雖然回答晚了但還是想說兩句。

題主其實說了兩種概念。

1。平時用二進位制現在換成三進製。

2。只儲存set位的序號。

第一點,如果底下硬體還是二進位制儲存的話,沒有意義的,三進製到二進位制反而有損耗,不解釋。

第二點,這算是一種編碼方式。平時我們的資料是把每一位都用01來表示是否set,而如果set的位很少,理論上是有利可圖的,但這與幾進製無關。

比如十進位制的10億,即1000000000,也可以表示為19,即第9位為1。或者按照題主的寫法就是9(即10^9,20億為99,10^9+10^9,先不考慮減法)。

比如二進位制裡2^512範圍的數字,位數序號只有0~511,即2^10,這樣看10bit比512bit小很多,哪怕需要描述很多個位都有剩餘。可是512/10,即壓縮後的512bit只能描述完整的51個位,而原始資料卻有512個位呢。

當然也可以再壓縮一下,要求位序號從大到小,即出現了第128位set後,後續只可能是0~127,那就只需要8位來描述就行了。理論最大值其實就是從0開始遞增,計算長度和直到512bit,也就是sum((2^(i-1))*i)=512,也就是最多能表示90個位——還是比512位要小很多。

那麼把1、2兩種辦法都用上呢?

比如6,可以是3^1+3^1,即1,1(每個都需要很大的表示範圍);或者是2*3^1,即2,1(前個值只需要1-2的表示範圍)。後者看起來的確容易省,但1-2的表示範圍用上三進製的乙個位(0-2)還是浪費了。不過0-1剛好可以塞進二進位制裡的乙個bit,此時三進製轉回二進位制反倒能省一點空間。

2^512大致是3^323。前面求得二進位制裡512bit能最多塞進90個位序號,現在每個數字還要跟上乙個bit用於1/2,即能塞進的位更少了,大概最多能放80個位序號,相比323的需求還是不夠。

引入減法的話,相當於把某一位翻轉,0->1或者三進製裡0->2。這樣一來理想條件下可以使得編碼數字裡只有一半的位為set,但隨之而來的是每個位的表示範圍要翻倍(1-2變成-1,-2,1,2,剛好需要二進位制裡的兩個bit),所以是沒有變化的。

那麼為什麼會沒有效果呢?

0x73是10000011b,但其實他不止利用了0/1的資訊,還通過隱含的位置關係來表達資訊,所以利用率高。

而記錄set位序號的話,前面的set位是7,1,0;可以表示為710/701/170/107等等,位置改變不影響資料結果——看到了吧,位置資訊沒有用上,自然利用率低。強制從大到小排列也只是稍微利用了位置資訊,利用率自然還是不夠高。

綜上所述,只有在特定情況下能達到壓縮的效果。

5樓:Wang Kellen

這個提問下面炸出好多軟狗……

答案是可以。

用單位元表示更多資訊是可能的,目前計算機的二進位制特徵其實取決於最底層的MOS管使用了「開關」特性來儲存資訊。如果使用可以表示更多狀態的儲存機制,自然就可以儲存更多資訊啦。

但是目前還沒有成熟的技術來取代這種開關儲存電路,即使有成本也是很高的。如果位元數減小了,但實際的電路物理面積增大了,估計也達不到題主所謂「減少大小」的目的了吧。

6樓:guan chen

首先沒有壓縮

其次參看TLC的固態硬碟,問題不是能不能,是材料允不允許

第三實際上你可以不要用三進製,可以用無窮進製,那麼這個訊號就是模擬訊號

7樓:威猛

題主說的應該是乙個編碼問題。

題主在考慮用三進製的時候只考慮到了編碼,那麼解碼的時候怎麼辦呢?就像你自己舉的例子一樣,101 1 01的確短了,但是編碼之後是沒有那些分割符的。那麼101101到底應該解碼成101 101還是1 01 1 01還是101 1 01呢?

所以在編碼時還要考慮編碼是否唯一。

如果可以有多個字元或者電平表示不同的狀態,肯定是用多進製更加效率啊!

如果只有0和1可以用,那麼還是要用二進位制。

8樓:謝然

題主,你知道為什麼各種編輯軟體在展示檔案內容時要使用十六進製制嗎?

最近民科好多呀,昨天是有人發現了C加加可以越界訪問陣列,說是致命缺陷;今天又有人認為把二進位制寫成三進製可以壓縮資訊。。。

9樓:嫌疑人x

其實可以舉個栗子

乙個酒店,有兩種房間,一種房間可以住2個人,另一種房間可以住3個人,但是所有的房間都是按人頭計數,一人100,某天這個酒店來了7個人,如果住兩人房間,這個團體需要掏800塊,住三人房間,這個團體需要掏900塊。選擇兩人房間要四個,但是三人房間只需要三個,但人房浪費了更多的錢。

在這個李子中,房間就好比是儲存單元,雖然三人房間看上去是比兩人房間更緊湊,但是三人房間比兩人房間更浪費資源。

再舉個梨子。

就是那個吃飽了撐的往瓶子裡先填石頭再填沙子最後灌水的禪理。如果一開始就往裡面倒水,水灌滿了你不管是加沙子還是石頭或者啥啥十二稜鍛礦(板磚),水都會溢位。

在這個荔枝裡,三進製就好比是石頭,二進位制就好比是沙子(不敢說水怕以後哪個大神腦袋瓜子一熱搞出來個新理論然後重新整理計算機儲存認知),你填石頭和填沙子,浪費的空間就很明顯。

答主只是乙個大學還沒畢業的菜鳥,可能回答的例子有問題,想表達的意思是奔著那個意思去的(才不會說是因為學過的資訊理論計算機原理什麼的全忘了呢),湊個熱鬧,就當個笑話看看吧各位(*/ω\*)

10樓:告別年代

這個問題可以換個思路:使用4進製或者8進製來儲存檔案,所需儲存媒介的體積減小,提高單位體積儲存密度,典型的就是SLC/MLC/TLC的更新換代。

11樓:趙磊

這個不能算壓縮,不過題主的想法也算是乙個很工程向的想法,如果表示一位三進製的儲存單元和二進位制的造價一樣,而且很容易造出相同規模的器件來,那成本就被這個壓縮演算法壓縮了(逃

12樓:ueian

很多大神都沒仔細看題吧,題主並沒有說在計算機裡面也是三進製儲存啊。

我就是想問問題主

2怎麼用你的方法表示?

5怎麼表示?8呢?

13樓:劉啟明

雖然說題主想用當前計算機體系去實現這種壓縮演算法是天方夜譚,但直接用資訊理論懟的答住們,如果計算機乙個位不僅僅有兩個態,是不是就是題主最終想要的結果了,而現在最前沿的量子計算機,不就是在努力實現這個東西麼?

14樓:豈不美哉

用什麼分隔呢?在不改硬體的情況下,計算機還是儲存0和1,就像你的例子裡一樣。

那分隔符最少最少就是個0或1。你用任何其他的表示都超過這個長度。

101+1+0 —— 1010100

那麼我如何知道這是101+1+0而不是101+100?清注意:你再加任何東西都已經和原二進位制數字數持平了。

這就是你的演算法,沒理解錯吧?(你最後乙個數用了10我改成0了),這就是其他題主所謂能壓縮不能解壓,否則我像高讚答主一樣用247的冪不是更短?發現問題所在了嗎?

不要說細節沒想好,我這已經窮舉所有可能了。

15樓:黃亮anthony

我支援題主。

大家知道計算機是根據電壓高低區分0和1的,可是電流不是突變的,它是連續的,也就是說0和1之間不光可以有0.5,還可以有0.6。

這樣,不光可以有3進製,理論上可以有無窮大的進製,也就是說我們可以在原來一位元的空間內壓縮無數字元。

這個發現就像發現可以打破熱力學第一定律一樣,注定要載入史冊。

大家一定要仔細想想,不要搞學術壓制,哪怕讓題主花10年20年研究出這個問題都值得。

16樓:王二錘

你應該問,世界上有沒有非二進位制計算機,比如三進製、十進位制、十六進製制計算機,或者為什麼現在的計算機是二進位制,而不是三進製、十進位制、十六進製制?蘇聯曾經就發明了三進製計算機。題主找一本數位電路或者計算機組成原理,看完應該就清楚了。

17樓:荒木龍哉

邏輯層面的運算及儲存不能影響實際層面的運算及儲存。

你的計算機的任何運算都要反應到硬體上才有意義,硬體比如有兩種狀態的開關,電晶體的通斷,導在線電壓的有無。

你的3最終還是要用1和0去表示,除非你的電腦硬體結構和邏輯電路從一開始就是照著3進製設計的,這樣你的三進製運算和儲存才能真正在實際層面有效。

蘇聯人這麼搞了,但這麼搞其實等於在搞計算機革命,因為就算你搞出來了你和所有其他主流計算機都沒有辦法適配,而實用性也不得而知,最後得不到支援也就不了了之了。

二進位制的 10 怎麼讀?

參考十進位制的讀法,對於一些最高位為 1,其他為 0 的數,都定義了乙個說法,例如 十 百 千 萬 億。不妨定義 0 零 0 1 一 1 10 二 2 100 四 4 1000 八 8 1 0000 尼 nibble 16 1 0000 0000 拜 byte 2561 0000 0000 0000...

為什麼計算機現在還在使用二進位制?

sfmmdm 抗干擾 因為只有兩種狀態,那在這兩種狀態之間劃一條界限,即使收到波動也不影響判斷。假如把高低電壓定為0V和5V,那只要高於2.5V就是1,低於2.5V就是0,每種電平能夠容許2.5V的誤差。簡化運算規則 我們用的十進位制,如果要進行運算,就必須背運算口訣,加法表減法表之類的,而十進位制...

計算機中的資料使用二進位制儲存,複雜的電路是如何做運算的呢?

湯川學長 複雜的電路只是基本電路的高度整合,基本運算電路只有與或非門,計算機儲存的只是高低電平,只是一種等價的邏輯轉換,將電平邏輯進行編碼就成了人所能看得懂的資訊 程式設計達人 這個問題並不難,簡單點的說就是邏輯運算啦。邏輯運算是CPU運算的本質,學過數學或者計算機的人都很容易理解的。再複雜的運算都...