How to extract specific bits from a number in C?

后端 未结 8 1223
遥遥无期
遥遥无期 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:18

    //To get value from specific position 'pos' to 'pos+offset' in number 'value'
    
    #define bitGet(value, offset, pos) (((1ull << offset) - 1) & (value >> (pos - 1)))
    
    //Set value 'newval' from position 'pos' to 'pos+offset' in number 'value'
    
    #define bitSet(value, offset, pos, newval)  \
    (~(((1ull << offset) - 1) << (pos - 1)) & value) | ((((1ull << offset) - 1) & newval) << (pos - 1))
    

提交回复
热议问题