未分類 19 4 月 2020 为什么有些枚举类型要用 2 的 n 次方存储? 为什么有些枚举类型要用 2 的 n 次方存储? 資深大佬 : beexu 65 仅仅是为了位运算时方便吗 大佬有話說 (8) 資深大佬 : ipwx 1、我猜主说的是 flag 类型而不是单纯的枚举类型。2、因为 2^k 是正交的啊。。。 資深大佬 : ipwx 正交:x[i] & x[j] = 1 当且仅当 i == j 資深大佬 : ipwx 好吧错了,x[i] & x[j] != 0 当且仅当 i == j 資深大佬 : entimm 这种方便在数据库中只使用一个字段存储多个数值属于混合值 資深大佬 : EminemW 这样用一个二进制位就能存了,省很多内存 資深大佬 : k9982874 内存对齐 資深大佬 : billlee 不要当成是一个 2^n 整数,它是一个放在第 n 位上的 bit. 一个 bit 就足够表示 true/false 了,需要保存很多开关的时候常用这种方法。 資深大佬 : Justin13 为了支持枚举值之间的位运算,便于使用