单片机中的P1&=0xfe什么意
p1 &= 0xfe;
确实是同 p1 = p1 & 0xfe 等价的;
但是具体含义同 p1 的位数有关系,以下我拿p1的值为二进制的全一为例,分别就 8,16,32 说明
8位: p1 = 11111111B & 11111110B
= 11111110B (清掉零位,留下1-7位)
16位: p1 = 1111111111111111B & 0000000011111110B
= 0000000011111110B (留下1-7位不变,其他全清掉)
32位: p1 = 11111111111111111111111111111111B & 0000000000000000000000...全部
p1 &= 0xfe;
确实是同 p1 = p1 & 0xfe 等价的;
但是具体含义同 p1 的位数有关系,以下我拿p1的值为二进制的全一为例,分别就 8,16,32 说明
8位: p1 = 11111111B & 11111110B
= 11111110B (清掉零位,留下1-7位)
16位: p1 = 1111111111111111B & 0000000011111110B
= 0000000011111110B (留下1-7位不变,其他全清掉)
32位: p1 = 11111111111111111111111111111111B & 00000000000000000000000011111110B
= 00000000000000000000000011111110B (留下1-7位不变,其他全清掉)
,总结一下,&0xfe的作用就是留下 1-7位不变,其余全清零。
收起