2016-01-16 2 views

ответ

5
  1. Во-первых, преобразовать каждый двоичный String в long значение с Long.parseLong(s, 2). Этот метод будет анализировать данную строку, используя радиус 2, что означает, что он должен интерпретировать строку как двоичную.
  2. Рассчитать побитовое сравнение с & по двум значениям long.
  3. Преобразуйте это обратно в двоичную строку с Long.toBinaryString(i).

Вот пример код:

public static void main(String[] args) { 
    String a = "11111"; 
    String b = "10001"; 
    long la = Long.parseLong(a, 2); 
    long lb = Long.parseLong(b, 2); 
    long lc = la & lb; 
    String c = Long.toBinaryString(lc); 

    System.out.println(c); // prints 10001 
} 

Другим способом без использования примитива long значения будет делать это вручную, обернув над цифрами и хранением & результата их точки коды в StringBuilder:

public static void main(String[] args) { 
    String a = "11111"; 
    String b = "10001"; 

    StringBuilder sb = new StringBuilder(a.length()); 
    for (int i = 0; i < a.length(); i++) { 
     sb.appendCodePoint(a.codePointAt(i) & b.codePointAt(i)); 
    } 
    String c = sb.toString(); 

    System.out.println(c); 
} 
1

Использование parseLong с десятичную 2 (вы также можете использовать аналогичные функции из Byte и классов Integer, в зависимости от максимального размера вами строки):

long ba = parseLong(a, 2); 
long bb = parseLong(b, 2); 
long bc = ba & bb; 
Смежные вопросы