帮忙用C或C++实现以下内容,谢谢。

我准备将一个十进制或者十六进制的数字中,修改其中的第7.8.9三位,同时保留修改之前这三位的状态至数组中,谁有比较优化的写法?
以358624为例吧,谢谢。

为了清晰,很多步骤拆开写了,你可以简化的

int GetBit(const int nNumber, int nPos)
{
    nPos = nPos % 32;
    return ((nNumber >>  nPos) & 0x01);
}

int SetBit(const int nNumber, int nPos, const int nValue)
{
    int nFalg = 0x1;
    nPos = nPos % 32;

    if (nValue == 0)
    {
        nFalg = nFalg << nPos;
        nFalg = ~nFalg;
        return (nNumber & nFalg);
    }
    else
    {
        nFalg = nFalg << nPos;
        return (nNumber | nFalg);
    }

    return nNumber;
}


int main()
{
    // 二进制位假设索引从0开始,比如00100000我们说第五位是1

    int nTestValue = 358624;    //10101111000 1 1100000

    // 如果第7位是1则设置成0   //10101111000 0 1100000
    if (GetBit(nTestValue, 7) == 1)
    {
        nTestValue = SetBit(nTestValue, 7, 0);
    }

    printf("nTestValue = %d\n", nTestValue); // 358496

    return 0;
}

你现在的难点在哪里?
自己会写,只是想找一个好的方法吗?

如果你只是修改二进制中7,8,9位,貌似不用转化成2进制再转回来,位运算不就行了?