Я пытаюсь выполнить операцию XOR для двух 64-битных переменных Long в Java. Проблема в том, что он терпит неудачу, когда я добавляю более 16 бит в переменную.
Например, это работает и возвращает 7:
Long h1 = Long.parseLong("1100001101001101");
Long h2 = Long.parseLong("1100001101000001");
System.out.println(Long.bitCount(h1 ^ h2));
Если я увеличу значение h1 и h2 до:
Long h1 = Long.parseLong("11000110000110100110101101001101");
Long h2 = Long.parseLong("11000011100001101001101101000001");
Я получаю сообщение об ошибке:
Исключение в потоке "main" java.lang.NumberFormatException: для входной строки: "11000110000110100110101101001101"
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long. parseLong(Long.java:592)
на java.lang.Long.parseLong(Long.java:631)
То же самое, если я удвою это (64 бита, что я хотел бы вычислить):
Long h1 = Long.parseLong("1100011100011000011010011010110100110110000110100110101101001101");
Long h2 = Long.parseLong("1100001110001100001101001101011010011011100001101001101101000001");
Любая помощь в том, почему это не работает выше 16 бит?
Long.parseLong(String)
равноparseLong(s, 10)
, - person meng   schedule 11.10.2019