Shift Operator Multiplier
The first thing I see is concatenating a string in a loop. This will create a new string every loop. You don't want that.

Instead use a StringBuilder:

public static String calc(long n1, long n2) {
    long temp, i = 0, result = 0;
    StringBuilder s=new StringBuilder();
    while (n2 != 0) {
        if ((n2 &amp; 1) == 1) {
            temp = n1;
            if(s.length()!=0)s.append("+ ");
            s.append("(").append(i).append("-").append(i).append(") ");
            result += (temp&lt;&lt;=i); 
        }
        n2 &gt;&gt;= 1;  
        i++;
    }
    return s.toString();
}