2014-05-16 24 views
0

我有興趣創建一個類,以便將數據存儲在一個更契約的莊園中,並且我知道我可以輕鬆存儲0和2 ^(x)-1之間的數字以及布爾值使用按位運算符,但我更喜歡更多的奇數,如最多6個或其他東西。 我一直在腦海裏弄了大約一週的時間,現在一直在Google上搜索一個小時左右,但我找不到任何幫助。將多個值包裝成單一數據類型

我正在尋找一種算法或東西來幫助我弄清楚如何最好地打包數據是0和一個隨機數1和32ish之間的間...

我只是頭腦風暴上這也想知道這樣的壓縮甚至應該被看着。我正在研究這個問題的其中一個原因就是數組龐大等等。對不起,如果這是一個愚蠢的問題,我的大腦最近並不十分敏銳。

而且,最大值的例子:1,5,8,3,12,19

已定型類我在想會是這樣的:

public class MyObject{ 
    private long packed; 
    ... 
    public int getA(){...} 
    public void setA(){...} 
    public int getB(){...} 
    public void setB(){...} 

感謝您的幫助,〜vzybilly〜

+0

你爲什麼要這樣做? –

+0

我對更多極端數據壓縮感興趣,同時仍然保持數據的可用性。我有很多項目都在成倍增長,所以我想創建一個能夠創建新類的類來保存所需的數據。我還記得我在做一個在線聊天,在存儲0〜2和0〜5的同時,將它放入4位......但我忘記了他們爲了實現這一目的所做的事情,我的最好成績是5位,額外的25% – vzybilly

+0

@vzybilly如果您的數據需求呈指數增長,則位打包不會有太大的幫助,因爲您最多隻能獲得線性壓縮率。 – awksp

回答

0

作爲一個普遍的問題,它對程序員來說並不是很有趣 - 可能是數學家/信息理論家。具體的例子很有趣,但在當今這個充滿記憶的世界中並不重要,但是你和計算機所做的其他工作更爲稀缺。

假設您必須在範圍1-6中存儲一個批號的序列。你可以將它們中的12個整合到一個32位整數中,如6^12 < 2^32。但是現在當你訪問數據時你有額外的算術運算,基本上看到入口模數6^n + 1有多少6^n。這是因爲無論您使用哪種表示方式,都會在速度和緊湊性方面進行權衡。實踐中的「最佳」意味着直截了當。

這並不是說有沒有時間節省空間是免費的,好的,優雅的,但是這是一個問題,只能由已經具備解決問題​​能力的人來提出,在需要的情況下它。

+0

我有興趣學習技能,即使我可能不需要他們現在,它可以是有幫助的。我也已經知道轉移和ORing他們在一起打包等,但正在尋找一個更緊湊的方式做 – vzybilly

+0

基本上,你只是存儲一組1-6價值作爲一個更大的數字在6基地。你沒有做移位和ORing;你正在做乘法和修改。 –

+0

我將如何使用它來存儲/檢索數據,我認爲這更多的是我感興趣的內容......我會看看如果我不能撥弄和測試出這樣做的方法 – vzybilly

相關問題