首页 理论教育零起点学习单片机多语言编程-位运算的应用

零起点学习单片机多语言编程-位运算的应用

【摘要】:位运算是以运算量的二进制位为单位所进行的运算。一般位逻辑运算都是以十六进制数形式进行。在右移运算中,左端的空位补0,右端移出位则舍弃。按条件将a=0x85,b=0x36,执行位运算具体如下:P3=a<<1,左移1位后a=00001010=0x0A显示正确,左位取消,右位补0。

位运算是以运算量的二进制位为单位所进行的运算。它包括两部分:位逻辑运算和位移位运算。

1.位逻辑运算(见表4-5)

表4-5 位逻辑运算表

978-7-111-47138-7-Chapter04-20.jpg

位逻辑运算的规律与基本逻辑是相同的,只不过是按位进行而已。一般位逻辑运算都是以十六进制数形式进行。例如,

设a=0x85,b=0x36,执行a&b则按二进制展开:

978-7-111-47138-7-Chapter04-21.jpg

设a=0x85,b=0x36,执行a^b则按二进制展开:

978-7-111-47138-7-Chapter04-22.jpg

状态相同结果为0,不同结果为1。

2.位移位运算

有位左移和位右移两种,见表4-6。

表4-6 移位运算表

978-7-111-47138-7-Chapter04-23.jpg

在左移运算中,右端的空位补0,左端移出位则舍弃。例如,a=0x45=01000101,执行a<<1,则为10001010,应补0,a=0x8A。(www.chuimin.cn)

在右移运算中,左端的空位补0,右端移出位则舍弃。例如,a=0x45=01000101,执行a>>1,0则为00100010,应补0,a=0x22。

带符号的运算数右移时,左端的空位按原符号位复制,右端移出位则舍弃。

3.【例4-5】 位运算编程

(1)编辑C语言源程序

978-7-111-47138-7-Chapter04-24.jpg

(2)编译源程序

(3)软仿真调试

对于具有赋值运算符的复合语句,先执行后面运算,再执行赋值运算。

1)进入调试状态,连续执行“跟踪”,在P1、P2、P3、P0口可显示结果。

2)运算验证。按条件将a=0x85,b=0x36,执行位运算具体如下:

978-7-111-47138-7-Chapter04-25.jpg

P3=a<<1,左移1位后 a=00001010=0x0A 显示正确,左位取消,右位补0。

P0=a>>1,右移1位后 a=01000010=0x42 显示正确,右位取消,左位补0。若下载到实验机,P2/P3/P0可用逻辑笔观察结果。