如何通过比特位位置数组生成对应字节?
简便生成指定位为1的字节值
当然有,直接用位运算就能搞定,完全不需要操作0/1数组:
- 核心思路:每个要设为1的位,对应一个2的幂次值。比如你说的第1位对应
2^0=1,第2位对应2^1=2,第5位对应2^4=16(注意二进制位通常从0开始计数,所以要把你列表里的数字减1再计算幂次) - 把这些幂次值直接相加,或者用**位或(|)**运算合并,就能得到最终的字节值。因为这些位都是唯一的,不会出现重叠,两种方式结果一致。
举个具体例子(以Python为例):
# 方法1:求和计算 target_bits = [1, 2, 5] result = sum(1 << (bit - 1) for bit in target_bits) print(result) # 输出19 # 方法2:位或累积计算 result = 0 for bit in target_bits: result |= 1 << (bit - 1) print(result) # 输出19
这个方法直接通过位运算操作二进制位,一步到位算出结果,不管是代码简洁度还是执行效率,都比操作0/1数组高得多。
内容的提问来源于stack exchange,提问作者Guilherme Richter
相关产品推荐
相关产品推荐

