How to extract specific bits from a number in C?

后端 未结 8 1371
遥遥无期
遥遥无期 2020-12-08 07:35

I need to extract specific part (no of bits) of a short data type in C.

For Example I have a binary of 52504 as 11001101000 11000 and I want First 6 (

8条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-08 08:15

    unsigned int extract_n2mbits(unsigned int x, int n, int m)
    {
    unsigned int mask, tmp;
    if (n < m) {
        n = n + m;
        m = n - m;
        n = n - m;
    }
    mask = 1 << (n - m + 1);
    tmp = m;
    while (tmp > 1) {
        mask = mask << 1 | 1 << (n - m + 1);
        tmp = tmp - 1;
    }
    return ((x & mask) >> (n - m + 1));
    }
    

提交回复
热议问题