2012-02-02 4 views
-1

Как читать двоичные числа с консоли и хранить их в java, кроме BigInteger.Чтение двоичных чисел с консоли

Edit: мне нужно прочитать ДО 2000 битов затем сделать несколько операций, как сдвиг, или и т.д. и мне нужен способ, кроме BigInteger Я не хочу использовать BigInteger, потому что я не могу получить побитно (хотя он имеет testBit(), это не полезно для меня, так как мне нужно печатать 1 или 0, этот метод возвращает true/false. Опять-таки, если-else - накладные расходы). Поэтому я хотел реализовать свой собственный метод get.

+2

Объясните, что вы подразумеваете под «двоичными» числами, поскольку все числа являются двоичными ... Вы хотите разрешить пользователю вводить число в ** двоичном формате **, например, «111»? – m0skit0

+0

есть. Мне нужно читать номера, такие как 1100011, 1110001010101 и т. Д. – sgowd

+0

Как вы их хотите сохранить? – rtheunissen

ответ

1

Ну, может быть, вы могли бы использовать BitSet

String input="1001010101010101"; 
    int len=input.length(); 
    BitSet bs=new BitSet(len); 
    int i=len-1; 
    for (char c:input.toCharArray()) 
      bs.set(i--, c=='1'?true:false); 

поддерживает логические операции, но не сдвиги

Edit: Я тоже не понимаю, почему не использовать BigInteger, как вы не смогли объяснить это ...

E dit: измененный код как предыдущая версия с измененным порядком бит, который может ввести в заблуждение

2
Integer.parseInt(enteredString, 2); 
+0

Не выбрасывает ли это числовое исключение? Поскольку wen я попытался разобрать строку или длину 100+, это произошло. Пожалуйста, проверьте. – sgowd

+0

Вы изначально не указали, что вам нужно долго читать цифры. См. Ответ wmz для решения. – flyx

0

Прочитайте их, как Strings и хранить их как ints используя Integer.parseInt(binaryString, 2);.
Если вы хотите снова использовать двоичный код, просто используйте Integer.toBinaryString();

+0

Wont it throw numberformatexcep. если есть больше бит? – sgowd

+0

Я не знаю .. не так ли? – rtheunissen

+0

ya it throws ... – sgowd

0

Integer.parseInt (urString, 2) можно использовать.

Integer.parseInt

+0

Это не поможет мне, если есть большое количество бит, скажем, выше 100 или 200. Это бросает numberformatexception – sgowd

Смежные вопросы