业务开发中是否使用一个二进制数来表示多种状态?

新手上路,请多包涵

看了线程池ctl字段的设计,一个二进制字段的不同位表示不同的含义,但是在实际的业务开发中是否能用到,有的说在数据库里用一个字段的多个位来表示不同的意义,这个可以理解,节省存储空间,但是相应带来了该字段写入和查询需要特殊处理,这个成本如何衡量,如果说节省存储空间算一个优势,那么在代码里的业务模型中是否有必要这样去设计字段,比如一个二进制字段10位,代表了10个字段的意义,那么还需要10个解析该字段的方法,比如第一位表示是否有券,那么必然有一个函数,入参是二进制字段的值,处理是&1运算,最后返回到底有没有券的结果,我觉得每一位都需要这样去做,那这样虽然是一个字段存储,但需要10个解析方法,不如直接设10个字段来表示各自的意义,可读性还好,大伙觉得呢,或者你们有什么场景在用一个二进制位来表示不同的字段

阅读 1.6k
3 个回答


0000000
0000001 星期天
0000011 星期天和星期一

你平时用的linux 比如说文件权限是777
分别对应了user group other的权限
7 = 111 = 4(r)+2(w)+1(x) 这边就是二进制0 1的理念了。

宣传栏