博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异或运算、与运算、或运算 运用在 多项选择题
阅读量:7141 次
发布时间:2019-06-29

本文共 905 字,大约阅读时间需要 3 分钟。

 

背景

当我们有个需求,有一个多项选择题的答案保存到数据库。

我们按照一般的思维,就是做多几个字段去存这些多项选这题。

 

例子

例如:

有一个多项选择题,

问题:你觉得广东哪些城市好玩?

A.东莞市

B.广州市

C.中山市

D.珠海市

E.茂名市

F.深圳市

按照一般思维,我们在数据库中设计6个字段,A/B/C/D/E/F,然后保存在数据库,谁选择了A,就把A对应的字段值存入数据库。

比如,我选择了B/C/D,表数据如下:

  FieldA FieldB FieldC FieldD FieldE FieldF  
  0 1 1 1 0 0  

这样虽然清楚,但是浪费表资源的同时,当数据量多,造成查询数据低下的效果。

异或

下面,我们来介绍,如何用异或来存多项选择题。

我们首先定义选择题答案的枚举:

//城市枚举    public enum CityPlay    {        DongGuang = 1 << 0,//东莞        GuangZhou = 1 << 1,//广州        ZhongShan = 1 << 2,//中山        ZhuHai = 1 << 3,//珠海        MaoMing = 1 << 4,//茂名        ShenZheng = 1 << 5//深圳    }

在表中,我们只存一个字段(整型)

Field

如果,选择了B/C/D,做B/C/D的按位或运算,存入数据库:

CityPlay.GuangZhou | CityPlay.ZhongShan | CityPlay.ZhuHai

值等于14,存入数据库。

那我们怎么知道用户选择了哪几个题呢?

很简单,做或运算,

比如是否选择了B? 很简单,把值与B的枚举做一次按位与运算,等于0就是没选择,其余选择

CityPlay.GuangZhou & 14 == 0? N:Y

 

其他选项以此类推。

posted on
2017-04-22 17:49 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/alunchen/p/6748528.html

你可能感兴趣的文章
51CTO001
查看>>
Linux环境下添加doxygen对C语言的更好的支持
查看>>
Hadoop hive sqoop zookeeper hbase生产环境日志统计应用案例(Hive篇)
查看>>
VMware上海谈新云基础架构管理平台价值
查看>>
查看服务器RAID卡信息的SHELL脚本和命令介绍
查看>>
openssh升级到7.9p1导致securecrt 7.1连不上的问题
查看>>
软件包的安装yum以及rpm的使用
查看>>
全球.INFO域名总量持续呈负增长,7月份净减5万
查看>>
【200期推荐】卫生部门欲接管医疗支付机构,能否两手兼顾
查看>>
How to use ServerCore<2>
查看>>
Java面向对象的三大特征(一)
查看>>
gitlab新建用户、组、分支以及为项目分配相应权限
查看>>
Java RMI之HelloWorld篇
查看>>
Linux C/C++ 内存泄漏检测工具:Valgrind
查看>>
vCenter一些常见问题解决
查看>>
Oracle字段的默认值无效的原因
查看>>
C++函数的重载/覆盖/隐藏
查看>>
php 设置提交信息后自动替换敏感字符加单引号
查看>>
存储容灾的相关限制
查看>>
sql连表查询where后面的条件是否可以加在on后面
查看>>