2014-01-17 84 views
0

研究使用按位比較來評估可能的100個選項中選擇了哪些選項的可能性。大數位按位比較

現在作爲一個整數,所有選項的選擇將需要存儲整數2到99的冪(6E29)。超出大約9E18的極限。

與dir權限一樣(1 =讀取,2 =寫入,4 =執行)1 + 2 + 4 = 7 =完全訪問。

我想知道100個選項中的哪一個已經被相同的方法選擇。

任何意見/提示非常感謝。

NB存儲將是MySQL的

- 編輯 -

這裏的最終目標是簡化檢查,以什麼貨幣,用戶可以在支付

分配值貨幣像這樣:

Currency OptVal 
GBP  1 
USD  2 
EUR  4 
AUD  8 
CAD  16 
ZAR  32 

等等(還有很多很多的貨幣,更將通過加密貨幣我敢肯定出現)

然後檢查用戶使用按位運算符的哪種貨幣會很方便...

因此,如果用戶的貨幣設置僅爲GBP和USD。 5 GBP & EUR 63 GBP,USD,EUR,AUD,CAD,ZAR

等等 - 希望能夠澄清目標。

問題是,如果您的賬戶大於100種貨幣,則以最簡單的形式存儲該整數。您需要每個選項的值爲2E(n-1),對於大數目n,此數字非常大且不能作爲整數存儲(BIGINT最大值爲18446744073709551615)

+0

100位可以用4 x 32位整數表示 –

+0

所以基本上選項數/ 32是表示該選項所需的整數數?比較將會是4位中的任何一位設置的位數? –

回答

0

您需要建議。不要這樣做。

MySQL提供boolean數據類型,便於標記。每個值佔用一個字節,所以存儲將比使用位大。

MySQL還提供了bit()數據類型,您可以在其中組合多達64位。你可以閱讀關於他們here

使用內置數據類型簡直就是正確的選擇。它們可以保護您免受服務器變更,操作系統升級以及您的應用程序和服務器具有不同的端存性(如果您不知道這是什麼,那麼您絕對不應該考慮一點操作)。

好消息是,有你想要做的數據類型。