Adding binary numbers

后端 未结 21 1367
孤独总比滥情好
孤独总比滥情好 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:09

    class Sum{
        public int number;
        public int carry;
    
        Sum(int number, int carry){
            this.number = number; 
            this.carry = carry;
        }
    }
    
    public String addBinary(String a, String b) {
    
        int lengthOfA = a.length();
        int lengthOfB = b.length();
    
        if(lengthOfA > lengthOfB){
            for(int i=0; i<(lengthOfA - lengthOfB); i++){
                b="0"+b;
            }
        }
        else{
             for(int i=0; i<(lengthOfB - lengthOfA); i++){
                a="0"+a;
            }
        }
    
        String result = "";
        Sum s = new Sum(0,0);
        for(int i=a.length()-1; i>=0; i--){
            s = addNumber(Character.getNumericValue(a.charAt(i)), Character.getNumericValue(b.charAt(i)), s.carry);
            result = result + Integer.toString(s.number);
        }
    
        if(s.carry == 1) { result += s.carry ;}
    
        return new StringBuilder(result).reverse().toString();
    }
    
    Sum addNumber(int number1, int number2, int carry){
            Sum sum = new Sum(0,0);
            sum.number = number1 ^ number2 ^ carry;
            sum.carry = (number1 & number2) | (number2 & carry) | (number1 & carry);
    
            return sum;
    }
    

提交回复
热议问题