Сумма двух чисел с побитовым оператором

Я вставляю код, чтобы найти сумму двух чисел с побитовым оператором. Пожалуйста, предложите, если это может быть оптимизировано. Спасибо...

public static int getSum(int p, int q)
{
int carry=0, result =0;
for(int i=0; i<32; i++)
{
    int n1 = (p & (1<<(i)))>>(i); //find the nth bit of p
    int n2 = (q & (1<<(i)))>>(i); //find the nth bit of q

    int s = n1 ^ n2 ^ carry; //sum of bits
    carry = (carry==0) ? (n1&n2): (n1 | n2); //calculate the carry for next step
    result = result | (s<<(i)); //calculate resultant bit
}

return result;
}

Ответы на вопрос(3)

Ваш ответ на вопрос