第4章 嵌入式Linux程序开发基础.ppt

  1. 1、本文档共112页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
将其保存为test2.sh。然后再编译并执行程序。 [root@localhost shell] # chmod +x test2.sh [root@localhost shell] # ./test2.sh Press any key to continue ...... 4.6 位运算 4.6.1 位运算符 C语言提供了六种位运算符:   (按位与)、|(按位或)、^(按位异或)、~(取反)、(左移)、(右移)。 1、按位与运算 按位与运算:只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。   例如:9 5可写成算式如下: 可见 9 5 = 1。 按位与运算通常用来对某些位清0或保留某些位。 例如把a 的高八位清0,保留低八位,可作 a 0x00ff 运算(0x00ff的二进制数为0000000011111111)。 main(){  int a=9,b=5,c;  c=ab;  printf(a=%d/nb=%d/nc=%d/n,a,b,c); } 2、 按位或运算 只要对应的二个二进位有一个为1时,结果位就为1。 例如:9|5可写算式如下: 可见9|5=13。 main(){  int a=9,b=5,c;  c=a|b;  printf(a=%d/nb=%d/nc=%d/n,a,b,c); } 3、按位异或运算 当两对应的二进位相异时,结果为1。 例如 9^5 : main(){      int a=9;      a=a^15;      printf(a=%d/n,a);    } 4、求反运算 其功能是对参与运算的数的各二进位按位求反。 例如,~9的运算为:~(0000000000001001)结果为:1111111111110110。 5、 左移运算 把“ ”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。 例如: a4 6、 右移运算 把“ ”左边的运算数的各二进位全部右移若干位,“”右边的数指定移动的位数。 例如:设 a=15,a2表示把000001111右移十进制3)。 4.6.2 位表达式 将位运算符连接起来所构成的表达式称为位表达式。在这些位运算符中,其优先级依次为: ~(取反运算符)、或(左移或右移)、(按位与)或|(按位或)或^(按位异或)。 a = 5; 就等价于:  a = a 5;  再比如:GPDR = ~ 0xff; 我们将其展开:GPDR = GPDR (~0xff);  GPDR = GPDR 0x00;   完成了对GPDR的清0。 一个常用的操作是用 来获取某个或者某些位。 例如获取整数x中的低4位可以写成 x =0x0F; x=x0x0F; 也可以用|、、、等配合来设置和清除某位或者某些位。 例如: x =0x1; 即:x=x0x1; /* 清除x的最后一位,即第0位 */ x =(0x15); 即:x=x(0x15); /* 清除x的低5位 */ x |=0x1; 即:x=x|0x1; /* 将最后一位(即第0位)设置为1 */ x |=(0x16); 即:x=x|(0x16); /* 将x的第6位设置为1 */ 本章小结 本章是在嵌入式Linux中进行程序设计的基础,介绍了Gcc编译器的使用,虽然它的选项较多,但掌握常用的一些选项即可。介绍了Make工程管理器的使用,这里包括Makefile的基本结构、Makefile的变量定义及其规则和 make命令的使用。还介绍了autotools的使用,这在项目设计中是非常有用的工具。最后简单介绍了位运算。 例如 OBJS = main.o mytool1.o mytool2.o CC = gcc main: $(OBJS) $(CC) $(OBJS) -o main main.o: main.c   $(CC) -c main.c mytool1.o: mytool1.c mytool1.h   $(CC) -c mytool1.c mytool2.o: mytool2.c mytool2.h   $(CC) -c mytool2.c 进一步简化 OBJS = main.o mytool1.o mytool2.o CC = gcc main: $(OBJS) $(CC) $^ -o $@ main.o: main.c  $(CC) -c $ -o $@ mytool1.o: mytool1.c mytool1.h  $(CC

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档