基于二进制掩码的比特分组算法需求
基于二进制掩码的比特分组算法需求
我现在需要一个算法,能根据字节B的掩码(或者叫抽选位规则),把字节A中对应位置的比特提取出来,从最低有效位(最右侧)开始,依次分组放到字节C里。给大家举个具体的例子来明确逻辑:
这里我用uint8_t类型做演示(实际场景里,源数据、掩码和目标数据的位数不一定局限于8位):
uint8_t A = 0b00110101; // 二进制值,对应十进制53 uint8_t B = 0b00011010; // 二进制值,对应十进制26,其中第1、3、4位(从右往左数,最低位为第0位)被设为1 uint8_t C = 0b00000100; // 最终得到的目标值,二进制对应十进制4
这个例子的逻辑拆解一下:
- 首先看掩码B:它的第1、3、4位是1,这意味着我们要从A中提取这三个位置的比特
- 提取A的对应位:A的第1位是0,第3位是0,第4位是1
- 最后把这些提取到的比特从C的最右侧(最低有效位)开始依次填充:先把A第1位的0放到C的第0位,再把A第3位的0放到C的第1位,最后把A第4位的1放到C的第2位,这样就得到了C的二进制值
00000100
内容来源于stack exchange
相关产品推荐
相关产品推荐

