gpt4 book ai didi

c++ - 我的位掩码有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:00 25 4
gpt4 key购买 nike

  1. 我应该创建 n 个位数组,n 不是常量!为什么程序给出垃圾而不是我的数组?

  2. 如何将获取到的数组写入文件中,让它们很快就存在?

例子:

class bits {
int *m;
int razm;
int num;
int N;
public:
bits(int r,int NN) { N=NN; razm=r; num=0; m=new int[N*razm]; }
~bits() {delete(m);}
void add() { m[num/32]|=(1>>(num%32)); num++;}
bool read(int n,int bit)
{
return m[(razm*n-bit)/32]&(1>>((razm*n-bit)%32)); }
};

void main()
{
bits x(8,10000);
char ch[100]={"11111122223334445698"};
for (int i=0;i<100;i++)
{
for(int j=0;j<8;j++)
if(ch[i]&(1<<j))
x.add();
}

for (int i=0;i<100;i++)
{
for(int j=0;j<8;j++) { if(x.read(i,j)) cout << "1"; else cout << "0"; }
cout << "\n";
}
}

最佳答案

你正在向右移动

(1>>(num%32))
(1>>((razm*n-bit)%32))

你应该向左移动的地方。向右移位产生 0,除非余数为 0。

关于c++ - 我的位掩码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12961008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com