研究使用按位比较来评估可能的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)
答案 0 :(得分:0)
你想要建议。不要这样做。
MySQL提供boolean
数据类型,方便标记。每个值确实占用一个字节,因此存储将大于使用位。
MySQL还提供bit()
数据类型,您可以将最多64位放在一起。您可以阅读here。
使用内置数据类型是正确的方法。它们可以保护您免受服务器更改,操作系统升级以及应用程序和服务器具有不同字节序的可能性(如果您不知道这是什么,那么您绝对不应该考虑小工具)。
好消息是您有想要做的数据类型。