按位比较大数

时间:2014-01-17 00:30:31

标签: mysql bitwise-operators largenumber

研究使用按位比较来评估可能的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

依此类推(有很多种货币,我会确定会通过加密货币产生更多货币)

然后使用按位运算符来检查用户使用哪种货币...

因此,如果用户的货币设置为3,则仅为GBP和USD。 5英镑及以上欧元 63英镑,美元,欧元,澳元,加元,ZAR

依此类推 - 希望这能澄清目标。

当你有>时,问题是以最简单的方式存储整数。 100种货币。每个选项需要一个值2E(n-1),对于大n,这个数字非常大,不能作为整数存储(BIGINT Max值为18446744073709551615)

1 个答案:

答案 0 :(得分:0)

你想要建议。不要这样做。

MySQL提供boolean数据类型,方便标记。每个值确实占用一个字节,因此存储将大于使用位。

MySQL还提供bit()数据类型,您可以将最多64位放在一起。您可以阅读here

使用内置数据类型是正确的方法。它们可以保护您免受服务器更改,操作系统升级以及应用程序和服务器具有不同字节序的可能性(如果您不知道这是什么,那么您绝对不应该考虑小工具)。

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