网上看到一题是这样的 checkbox中有多个值时,为了节约数据空间,我们可以用2^n(n>=0)的值来作为value的值。比如有4个选项A,B,C,D。value分别为1,2,4,8。假如用户选了AC,那么数据库存的就是1+4=5,这样一个5就表示了用户选中的是A,C。取出是用5 分别与上面的1,2,4,8与运算不为0即表示用户选中过。
如5(0101)
A(0001)
--------------
0001-->!=0 表示用户选中A
如5(0101)
B(0010)
--------------
0000-->==0 表示用户没用选中B
其他两项同理。
请问这个用2^n 做解题思路是不是有什么特殊之处呢,两个数相加后的值和这两个数做与运算怎么就这么巧有什么规律定理吗,谢谢
如5(0101)
A(0001)
--------------
0001-->!=0 表示用户选中A
如5(0101)
B(0010)
--------------
0000-->==0 表示用户没用选中B
其他两项同理。
请问这个用2^n 做解题思路是不是有什么特殊之处呢,两个数相加后的值和这两个数做与运算怎么就这么巧有什么规律定理吗,谢谢
解决方案 »
- 求助java学习过程
- 跪求银联POS终端mac算法
- 跪求spark实现固定群组的实现方式及方案
- Tomcat6.0.18为什么在每次更改了Servlet后需要重新启动才可以呢
- 帮我看一下这些代码是什么意思
- 在java中,对于数学计算中的一些特殊字符,比如:log、分数、幂等的手写形式是如何输入显示和存放到数据库中啊!
- JButton有时圆角有时方角,怎样控制?
- java中如何调用其它程序呀?
- 除了用ping的方法外,有没有其他的办法判断两台机器是否连通?
- 有人会html parser吗?照着例子敲的,但是好像解析不出来
- 请教一道JAVA线程方面的问题
- Permgen OutOfMemory,请问有什么手段或者工具可以看到Permgen中被intern()的String的具体内容
当某个 enum 的个数在 64 个以内的时候, 它的 EnumSet 对象实际上就是用了一个 long 来存储的 "bit set"。