Java実装は加減乗除を加算しない


1つの関数を書いて、2つの整数の和を求めて、関数の体内で+、-、*、/の4つの演算記号を使用してはいけないことを要求します.
コード#コード#
    /**
     *         
     * @param n1
     * @param n2
     * @return
     */
    public static int add(int n1, int n2) {
        int sum = 0;
        //      
        int carry = 0;
        do {
            //     ,    ,       
            //   1+2,0001 + 0011,0001^0011=0010,     1+1         ,       0
            sum = n1 ^ n2;
            //      ,   ,     
            // 0001&0011=0001,     1+1         ,      ,      
            carry = (n1 & n2) << 1;
            //           
            //                 
            n1 = sum;
            n2 = carry;
            //       ,    
        } while (n2 != 0);
        return sum;
    }

    public static void main(String[] args) {
        int result = add(1, 2);
        System.out.println(result);
    }