如何使用位表示访问可索引的数据结构

how to use bit representation to access indexable data structure

本文关键字:索引 数据结构 访问 何使用 表示      更新时间:2023-10-16

给定一个可索引的数据结构,例如n = 3和int i = 3的vector = ['a','b','c'],我想转换3到其n位二进制表示(011)中,然后返回向量的元素['b','c']。也就是说,对于二进制表示中的每个1,在该位置返回元素。但是,我该如何谈论二进制数字中的"位置"呢?我很难将一个想法映射到另一个想法。任何帮助。

使用位移动测试i的每一点:

 for(x=0; x<sizeof(int) * 8; x++)
 {
     if((i & (1<<x)) > 0)
     {
        // bit at position x is set in i
        add vector[i];          
     }
 }  

这将导致

011 & 001  = 001 // true
011 & 010 =  010 // true
011 & 100 =  000 // false
.. etc