单片机 ME950单片机
回帖(1)
2022-2-14 11:30:14
一、按位与(屏蔽、取出、清零)
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
1 & 1 =1
(1)屏蔽
int a = 0x1234;
a & 0xff00 = 0x1200
取出高八位,屏蔽低八位
(2) 清零
将A寄存器的bit4位清0
A &= ~(1<<4);
二、按位或(设置)
1 | 0 = 1
0 | 1 = 1
1 | 1 = 1
0 | 0 = 0
(1)将A寄存器的bit4位置1
A |= (1<<4);
三、综合练习
假设寄存器a的值是0x34 = 0b0011 0100
现在要让a的bit6~bit4设置为101,
即最后的结果是a = 0b0101 0100 = 0x54
思路:
①先把bit6~bit4置0
②再把bit6和bit4置1
代码如下(示例):
#include
int main(void) {
unsigned int a = 0x34; // a = 0011 0100 = 52 = 0x34
printf("%xn", a);
/* 置bit6~bit4 为 101 */
//先把bit6~bit4置0
a &= ~( 7 << 4 );
printf("%xn", a); // a = 0000 0100 = 4 = 0x04
//再把bit6和bit4置1
a |= ( 5<<4 );
printf("%xn", a); // a = 0101 0100 = 84 = 0x54
return 0;
}
运行结果图:
一、按位与(屏蔽、取出、清零)
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
1 & 1 =1
(1)屏蔽
int a = 0x1234;
a & 0xff00 = 0x1200
取出高八位,屏蔽低八位
(2) 清零
将A寄存器的bit4位清0
A &= ~(1<<4);
二、按位或(设置)
1 | 0 = 1
0 | 1 = 1
1 | 1 = 1
0 | 0 = 0
(1)将A寄存器的bit4位置1
A |= (1<<4);
三、综合练习
假设寄存器a的值是0x34 = 0b0011 0100
现在要让a的bit6~bit4设置为101,
即最后的结果是a = 0b0101 0100 = 0x54
思路:
①先把bit6~bit4置0
②再把bit6和bit4置1
代码如下(示例):
#include
int main(void) {
unsigned int a = 0x34; // a = 0011 0100 = 52 = 0x34
printf("%xn", a);
/* 置bit6~bit4 为 101 */
//先把bit6~bit4置0
a &= ~( 7 << 4 );
printf("%xn", a); // a = 0000 0100 = 4 = 0x04
//再把bit6和bit4置1
a |= ( 5<<4 );
printf("%xn", a); // a = 0101 0100 = 84 = 0x54
return 0;
}
运行结果图:
举报
更多回帖