C++ 在数组大小中使用位操作的原因

C++ 在数组大小中使用位操作的原因,c++,c++11,c++14,C++,C++11,C++14,最近我得到了一个基本的比特操作思想,我正在经历一个问题,我发现这个C++语句: int popcount[1<<16]; 我确实有左/右位移位的基本概念,但我想知道为什么在数组大小的位置使用它。11除非您在代码中找到注释,除非您了解popcount的意图,你可以猜测为什么写1除非你在代码中找到注释,除非你找到popcount的意图,你可以猜测为什么写1@KirillBulygin我没有投反对票,但很可能是因为你没有回答这个问题。OP表示,他理解位操作,因此很可能已经知道数组将有多大

最近我得到了一个基本的比特操作思想,我正在经历一个问题,我发现这个C++语句:

int popcount[1<<16];

我确实有左/右位移位的基本概念,但我想知道为什么在数组大小的位置使用它。

11除非您在代码中找到注释,除非您了解popcount的意图,你可以猜测为什么写1除非你在代码中找到注释,除非你找到popcount的意图,你可以猜测为什么写1@KirillBulygin我没有投反对票,但很可能是因为你没有回答这个问题。OP表示,他理解位操作,因此很可能已经知道数组将有多大。他更想知道为什么有人会这样做,但你的帖子没有回答。当然,要真正知道为什么有人会这样做,唯一的办法就是问他们,这就是为什么我投票以“意见”来结束这篇文章based@scohe001你说得有道理,尽管没有证据表明OP明白这一点1@KirillBulygin我没有投反对票,但很可能是因为你没有回答这个问题。OP表示,他理解位操作,因此很可能已经知道数组将有多大。他更想知道为什么有人会这样做,但你的帖子没有回答。当然,要真正知道为什么有人会这样做,唯一的办法就是问他们,这就是为什么我投票以“意见”来结束这篇文章based@scohe001尽管没有证据表明OP理解1提供的该数组包含16位数字的总体计数,但您还是有道理的。也就是说,在每个索引处,它被存储,在特定的16位数字中设置了多少位。1提供此数组包含16位数字的填充计数。也就是说,在每个索引处,它被存储,在特定的16位数字中设置了多少位。1.
 int popcounts[1<<16] = { 0 };

 int main() {
    uint16_t id;
    while (myfile >> id) {
      popcounts[id]++;
    }
 }