Вы, вероятно, предполагаете, что 0100001111100111 будет прочитан Integer.valueOf
как двоичное значение, но это не так, и он считает, что это десятичное значение, проблема в том, что число слишком велико для целого числа, поэтому у вас есть исключение.
При использовании Long.valueOf
у вас не будет исключения, но нет ожидаемого результата
Один из способов - выполнить преобразование самостоятельно, конечно, при условии, что количество цифр не слишком большой даже в двоичном