分治法—二进制的完全表示

分析一下整个思路,位运算着重讲一下
旁边是一个样例
感谢(^_^

img

string solve(int n)
{
    if (n == 0) return "0";
    if (n == 1) return "2(0)";
    string rnt;
    for (int i = 30; i >= 0; i--) // i从n的二进制的第30位依次循环至第0位,第31位为符号位
    {
        if ((n >> i) & 1) // 如果第i位是1,则表示2^i,2的i次方
        {
            if (!rnt.empty()) // 不为首部要加"+"号
                rnt += "+";
            if (i == 1)    // 如果为2^1,直接加2
                rnt += "2";
            else // 否则的话,继续拆分2^i,即递归拆分i为2(...)形式
                rnt += "2(" + solve(i) + ")";
        }
    }
    return rnt;
}

看不明白这个输出的结果是啥意思,2(0)和2(2)各自代表什麽呢