Java Long.parseLong的NumberFormatException

Java Long.parseLong的NumberFormatException,java,exception,long-integer,numberformatexception,Java,Exception,Long Integer,Numberformatexception,当我尝试运行这段代码时(是的,我知道它会运行很长时间,而且不是很漂亮): 我不明白为什么。我该怎么办? 谁能给我解释一下这个问题吗?如果你看到这个: long的范围,即最大值为9223372036854775807,19位,一旦它达到100000000000000000(20位),它将尝试将此字符串转换为超出范围的long,因此您会得到一个异常。一旦您的二进制数有20位,以十进制重新解释它将超过long的最大值。 DecimalFormat formatA = new DecimalForma

当我尝试运行这段代码时(是的,我知道它会运行很长时间,而且不是很漂亮):

我不明白为什么。我该怎么办? 谁能给我解释一下这个问题吗?

如果你看到这个:


long的范围,即最大值为9223372036854775807,19位,一旦它达到100000000000000000(20位),它将尝试将此字符串转换为超出范围的long,因此您会得到一个异常。

一旦您的二进制数有20位,以十进制重新解释它将超过
long的最大值。
DecimalFormat formatA = new DecimalFormat("000");
        DecimalFormat formatB = new DecimalFormat("0000000000000000000000000000000000000000");

        for(int c=0; c<=7; c++){
            String binC = formatA.format(Integer.parseInt(Integer.toBinaryString(c)));
            for(int d=0; d<LFSRa.length; d++){
                LFSRa[d]=Character.getNumericValue((binC.charAt(d)));                   
            }
            for(long e=0; e<=1099511627775L; e++){
                String binE = formatB.format(Long.parseLong((Long.toBinaryString(e))));
                for(int f=0; f<LFSRb.length; f++){
                    LFSRb[f]=Character.getNumericValue((binE.charAt(f)));
                }


            }
        }
Exception in thread "main" java.lang.NumberFormatException: For input string: "10000000000000000000"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at A41.main(A41.java:76)