关于对位操作赋值

今天调试程序的时候遇到一个之前没遇到的问题

首先:

 

下面是一个结构体,定义的位类型

struct SW_Struct //因为共用体位操作会次序相反 所以这么排序
{
uint8_t sw1_state:1;
uint8_t sw1_defult:1;
uint8_t sw2_state:1;
uint8_t sw2_defult:1;
uint8_t sw3_state:1;
uint8_t sw3_defult:1;
uint8_t sw4_state:1;
uint8_t sw4_defult:1;
uint8_t sw5_state:1;
uint8_t sw5_defult:1;
uint8_t sw6_state:1;
uint8_t sw6_defult:1;
uint8_t sw7_state:1;
uint8_t sw7_defult:1;
uint8_t sw8_state:1;
uint8_t sw8_defult:1;

};

 

buf[0]=0x0f

m=0x02

 

sw1_state=buf[0]&m;

调试发现sw1_state=0;

经过请教同事发现 buf[0]&m实际等于0x02;最后一位=0;所以不是我自己理解的大于一就是1;!!!!!

 

posted @ 2021-04-15 17:05  会编程的数组  阅读(155)  评论(0)    收藏  举报