【发布时间】:2008-10-07 02:44:48
【问题描述】:
有一种常见的方法是使用位掩码将多个值存储在一个变量中。例如,如果用户对某项具有读、写和执行权限,则可以通过说 read = 4 (2^2), write = 2 (2^1), execute = 1 (2^0) 将其转换为单个数字,然后将它们相加得到 7。
我在几个 Web 应用程序中使用了这种技术,我通常将变量存储到一个字段中,并根据不同值的数量给它一个 MEDIUMINT 或其他类型。
我感兴趣的是,您可以像这样存储的值的数量是否存在实际限制?例如,如果数字超过 64,则不能再使用(64 位)整数。如果是这样的话,你会用什么?它将如何影响您的程序逻辑(即:您仍然可以使用按位比较)吗?
我知道,一旦您开始获得大量值,另一种方法将是最佳解决方案,但我对 此 方法的边界感兴趣。
【问题讨论】:
标签: sql bit-manipulation bitmask