2

给定一个可索引的数据结构,比如 vector = ['a','b','c'] 大小为 n=3 和 int i = 3,我想将 3 转换为它的 n 位二进制表示(011 ) 并返回向量的元素 ['b','c']。也就是说,对于二进制表示中的每个 1,返回该位置的元素。但是我如何谈论二进制数中的“位置”?我无法将一个想法映射到另一个想法。任何帮助表示赞赏。

4

1 回答 1

3

使用位移来测试每一位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
于 2014-02-02T00:25:08.633 回答