回复 楼主 CLuck
一个unsigned int 可以存储32位,那么2^1024只需要32个顺序的unsigned int字节就可以表示,高位在前,低位在后
那么定义一个unsigned int num[32];//一共有1024位
那么再定义当前位的标志point=0;//指向这个数组的第0位;
那么第point位上的所在的字节是num数组中的第point>>5个字节;那么定义一个btye=num[point>>5];//表示第point位所在的字节
那么第point位所在的unsigned int的位是第0x8000>>(point&0x1f)位,那么定义一个bit=0x8000>>(point&0x1f);//表示第point位所在的字节的所在位
这个point的范围是0~1023,那么定义一个point_max=1024;
接下来我们只要能随即产生1024个0或者1,把他赋值给
unsigned int num[32];
// 用来存放2^1024次方
unsigned int point_max=1023 ;//
unsigned int point=0;//
unsigned int byte=num[point>>5];//point对应所在字节
unsigned int bit=(0x8000>>(point&0x1f));//point对应位的值
memset(num,0x00,sizeof(num));
for(point=0;point<point_max;point++)
{
byte=num[point>>5];
bit=(0x8000>>(point&0x1f));
//随即产生0或者1
if(产生1)
{
byte=byte|bit;
}
}
那么这么结束后,num数组存在的内存顺序下来就是2^1024的二进制值
[
本帖最后由 a373339205 于 2012-5-18 18:10 编辑 ]