首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大数解析为二进制

将大数解析为二进制
EN

Stack Overflow用户
提问于 2014-04-25 16:30:19
回答 1查看 185关注 0票数 0

我试图制作一个程序来找到n*n二进制0,1矩阵的最大可能行列式。我当前代码的问题是,在4x4之后,数字太长,无法容纳' long‘。下面的代码是我用来生成矩阵的代码。

代码语言:javascript
复制
for (int j = 0; j < Math.pow(2, Math.pow(dim, 2)); j++) { //for each possible matrix
            int[][] matrix = new int[dim][dim];//make a 2d i*i matrix
            long t = Long.valueOf(Long.toBinaryString(j)); //line 58

            //format the string so its length = # of elements in the matrix
            String format = "%0" + (dim * dim) + "d";
            String s = String.format(format, t);

            //fill matrix
            int counter = 0;
            for (int k = 0; k < dim; k++) {//for each row
                for (int l = 0; l < dim; l++) {//for each column
                    matrix[k][l] = s.charAt(counter) - 48; //the -48 is for ascii conversions
                    counter++;
                }// end l
            }// end k -- matrix is filled

当我检查一个4*4时所犯的错误:

代码语言:javascript
复制
     Exception in thread "main" java.lang.NumberFormatException: For input string: "10000000000000000000"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:444)
at java.lang.Long.valueOf(Long.java:540)
at determinants.Determinants.findMaxBinDet(Determinants.java:58)
at determinants.Determinants.main(Determinants.java:38)

我还能做些什么来把这个数字解析成二进制呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-25 16:42:51

它显示您希望使用单元格中所有0和1的组合创建。一个简单得多的方法是

代码语言:javascript
复制
for (long j = 0, limit = 1<<(dim*dim); j < limit; j++) { //for each possible matrix
    int[][] matrix = new int[dim][dim];//make a 2d i*i matrix

    //fill matrix
    for (int k = 0, counter = 0; k < dim; k++) {//for each row
        for (int l = 0; l < dim; l++, counter++) {//for each column
            matrix[k][l] = (j >>> counter) & 1;
        }
    }

这只会工作到7x7矩阵,但由于生成所有8x8组合需要超过一生的时间,因此需要另一种方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23298439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档