【问题标题】:how to use bit representation to access indexable data structure如何使用位表示来访问可索引的数据结构
【发布时间】:2014-02-02 00:20:32
【问题描述】:

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

【问题讨论】:

标签: c++ binary bit-manipulation powerset


【解决方案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

【讨论】:

  • 不错。你能解释一下'
  • 这会导致 int 中的位数。 Sizeof(int) 会给你字节数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 2013-05-01
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多