Adding binary numbers

后端 未结 21 1381
孤独总比滥情好
孤独总比滥情好 2020-11-28 07:50

Does anyone know how to add 2 binary numbers, entered as binary, in Java?

For example, 1010 + 10 = 1100.

21条回答
  •  一整个雨季
    2020-11-28 08:08

    The idea is same as discussed in few of the answers, but this one is a much shorter and easier to understand solution (steps are commented).

    // Handles numbers which are way bigger.
    public String addBinary(String a, String b) {
        StringBuilder sb = new StringBuilder();
        int i = a.length() - 1; 
        int j = b.length() -1;
        int carry = 0;
        while (i >= 0 || j >= 0) {
            int sum = carry;
            if (j >= 0) { sum += b.charAt(j--) - '0' };
            if (i >= 0) { sum += a.charAt(i--) - '0' };
    
            // Added number can be only 0 or 1
            sb.append(sum % 2);
    
            // Get the carry.
            carry = sum / 2;
        }
    
        if (carry != 0) { sb.append(carry); }
    
        // First reverse and then return.
        return sb.reverse().toString();
    }
    

提交回复
热议问题