2014-01-17 82 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

使用内置数据类型简直就是正确的选择。它们可以保护您免受服务器变更,操作系统升级以及您的应用程序和服务器具有不同的端存性(如果您不知道这是什么,那么您绝对不应该考虑一点操作)。

好消息是,有你想要做的数据类型。