位操作库
XWOS的位操作库
Categories:
少于1分钟
位操作
XWOS提供了位操作模板库, 基本类型 中定义的 各种 非函数指针类型 都可使用位操作。位操作函数模板包括:
xwbop_s1m()
:将数据掩码部分的位全部置1xwbop_c0m()
:将数据掩码部分的位全部清0xwbop_x1m()
:将数据掩码部分的位全部翻转xwbop_rbit()
:将数据的位镜面翻转xwbop_re()
:将数据的大小端翻转xwbop_ffs()
:在数据中从最低位起查找第一个被置1的位xwbop_fls()
:在数据中从最高位起查找第一个被置1的位1的位xwbop_ffz()
:在数据中从最低位起查找第一个被清0的位xwbop_flz()
:在数据中从最高位起查找第一个被清0的位xwbop_weight()
:统计数据中1的个数
所有位操作函数的第一个参数均为 基本类型 , 第二个参数是数据或数据的指针,例如:
xwssq_t idx;
/* 从最低位开始查找"xwu32_t"类型的数据"0"中第一个被置1的位,结果为-1 */
idx = xwbop_ffs(xwu32_t, 0);
/* 从最低位开始查找"xwu32_t"类型的数据"0xF0"中第一个被置1的位,结果为4 */
idx = xwbop_ffs(xwu32_t, 0xF0);
/* 将"xwu32_t"类型的数据"0xAA"进行镜像翻转,结果为0x55 */
xwu32_t rdata = xwbop_rbit(xwu32_t, 0xAA);
位图操作
XWOS提供了基本类型 xwbmp_t
,用于定义位图,位图是 xwbmp_t
的数组。
用户可以声明任意位数的位图,XWOS提供了函数集方便用户操作位图:
xwbmpop_declare()
:声明位图xwbmpop_assign()
:赋值xwbmpop_cmp()
:比较两个位图xwbmpop_s1all()
:所有位置 1xwbmpop_c0all()
:所有位清 0xwbmpop_s1i()
:将位图中某位置 1xwbmpop_s1m()
:将位图中掩码部分置 1xwbmpop_c0i()
:将位图中某位清 0xwbmpop_c0m()
:将位图中掩码部分清 0xwbmpop_x1i()
:将位图中某位翻转xwbmpop_x1m()
:将位图中掩码部分翻转xwbmpop_t1i()
:测试位图中的某位是否为 1xwbmpop_t1ma()
:测试位图中掩码部分是否全部为 1xwbmpop_t1ma_then_c0m()
:测试位图中掩码部分是否全部为1,如果是,就将掩码部分全部清 0xwbmpop_t1mo()
:测试位图中掩码部分是否至少有一位为 1xwbmpop_t1mo_then_c0m()
:测试位图中掩码部分是否至少有一位为1,如果是,就将掩码部分全部清 0xwbmpop_t0ma()
:测试位图中掩码部分是否全部为 0xwbmpop_t0ma_then_s1m()
:测试位图中掩码部分是否全部为 0 ,如果是,就将掩码部分全部置 1xwbmpop_t0mo()
:测试位图中掩码部分是否至少有一位为 0xwbmpop_t0mo_then_s1m()
:测试位图中掩码部分是否至少有一位为 0 ,如果是,就将掩码部分全部置 1xwbmpop_not()
:非运算xwbmpop_and()
:与运算xwbmpop_or()
:或运算xwbmpop_xor()
:异或运算xwbmpop_ffs()
:从最低位起查找第一个被置1的位xwbmpop_fls()
:从最高位起查找第一个被置1的位xwbmpop_ffz()
:从最低位起查找第一个被清0的位xwbmpop_flz()
:从最高位起查找第一个被清0的位xwbmpop_weight()
:统计 1 的个数