Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中从内存逐位读/写_Java - Fatal编程技术网

如何在Java中从内存逐位读/写

如何在Java中从内存逐位读/写,java,Java,问题是从以下问题中得出的:找到所有(i%8)&0x1)==0){ 结果.添加(i); 对于(int j=2;i*j

问题是从以下问题中得出的:找到所有<10^9的素数。 我用“埃拉托斯提尼筛”来解决这个问题,我试着用一个比特来表示每个数字的状态。下面是我的代码

// n is the input integer
byte[] allNum = new byte[n/8 + 1];
ArrayList<Integer> result = new ArrayList<Integer>();
for (int i = 2; i < n; i++) {
    if ((allNum[i/8]>>(i%8) & 0x1) == 0) {
        result.add(i);
        for (int j = 2; i*j < n; j++) {
            allNum[i*j/8] |= 1 << i*j%8; 
        }
    }
}
return result;
//n是输入整数
字节[]allNum=新字节[n/8+1];
ArrayList结果=新建ArrayList();
for(int i=2;i>(i%8)&0x1)==0){
结果.添加(i);
对于(int j=2;i*j
位集复合=新位集(n+1);

对于(int i=2;我已经试过BigIntege了。嗨,Adi。谢谢你的建议。我试过了,效果很好。但是,移位大量位(比如1M)似乎需要很长时间。
BitSet composites = new BitSet(n + 1);
for (int i = 2; i <= n; ++i) 
  if (!composites.get(i)) {
    ... /* It's prime. */
    for (int multiple = 2*i; multiple > 0 && multiple <= n; multiple+=i) 
      composites.set(multiple); /* Strike out every i-th number. */
  }