在嵌入式系统中,如果大规模使用bit操作,会增加CPU负担吧,shift操作相对会高效吧。例如:
#include <stdio.h>
#include <stdint.h>
typedef struct tagExample_t
{
uint32_t u32Val1 :11;
uint32_t u32Val2 : 3;
uint32_t u32Val3 : 7;
uint32_t u32Val4 : 5;
uint32_t u32Val5 : 4;
uint32_t u32Val6 : 1;
uint32_t u34Rrv : 1;
} Example_t;
/* Show value by bit operation */
void show_value_by_bit(uint32_t u32Num)
{
Example_t *pstNum = (Example_t *) &u32Num;
printf("value1(%d)\n", pstNum->u32Val1);
printf("value2(%d)\n", pstNum->u32Val2);
printf("value3(%d)\n", pstNum->u32Val3);
printf("value4(%d)\n", pstNum->u32Val4);
printf("value5(%d)\n", pstNum->u32Val5);
printf("value6(%d)\n", pstNum->u32Val6);
return;
}
/* Show vlaue by shift operation */
void show_value_by_shift(uint32_t u32Num)
{
uint32_t u32Val1 = u32Num&0x7FF;
uint32_t u32Val2 = (u32Num>>11)&0x7;
uint32_t u32Val3 = (u32Num>>14)&0x7F;
uint32_t u32Val4 = (u32Num>>21)&0x1F;
uint32_t u32Val5 = (u32Num>>26)&0xF;
uint32_t u32Val6 = (u32Num>>30)&0x1;
printf("value1(%d)\n", u32Val1);
printf("value2(%d)\n", u32Val2);
printf("value3(%d)\n", u32Val3);
printf("value4(%d)\n", u32Val4);
printf("value5(%d)\n", u32Val5);
printf("value6(%d)\n", u32Val6);
return;
}
int main()
{
uint32_t u32Num = 0x11223344;
show_value_by_bit(u32Num);
show_value_by_shift(u32Num);
return 0;
}
函数show_value_by_shift()比show_value_by_bit()效率高吧, 特别是嵌入式系统(资源受限系统)大面积使用的情况下, 对吧。
--
FROM 106.120.102.*