网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章运算

第9章 位运算 教学目的: 通过本章的学习,要求能理解二进制位运算操作和位段结构,能熟练使用位运算符进行程序设计,学习位操作能够为硬件平台的程序设计奠定基础,为后续课程的学习起到铺垫作用。 第9章 位运算 结构和内容 第9章 位运算 重点和难点 重点: (1) 位逻辑运算 (2) 移位运算 (3) 复合赋值位运算 (4) 不等长数据的位运算 (5) 位段的结构、存储及使用 难点: (1) 不等长数据的位运算 (2) 位段的结构、存储及使用 9.1 位运算的C程序实例 位运算引例 【例9.1】一个简单的位运算C程序 /* 源文件名:Li9_1.c 功能:从键盘输入两个整数a和b,分别对其进行位运算。 */ #include stdio.h void main() { int a,b; int e,f,g,h,i; puts(请输入整数a和b:); /*打印输出一串字符串*/ scanf(“%d%d”,a,b); /*假如这里输入的值为a=2,b=3,那么转化为二进制位有a=2,b=3 ,进行如下运算*/ e=a|b; /*a与b进行或运算,结果存入到变量e中*/ f=ab; /*a与b进行与运算,结果存入到变量f中*/ g=a^b; /*a与b进行异或运算,结果存入到变量g中*/ h=~a; /*对a进行取反运算,结果存入到变量h中*/ i=b2; /*对b进行左移2位运算,结果存入到变量i中*/ printf(e=%d\n,e); printf(f=%d\n,f); printf(g=%d\n,g); printf(h=%d\n,h); printf(i=%d\n,i); } 位逻辑运算规则与逻辑运算(∣∣、!)一样,也可用真值表表示。设a、b分别表示一个二进制位,则按位逻辑运算的真值表可表示成如表9-1所示的形式。 按位与运算 按位或运算 按位异或运算 按位取反运算 按位与运算 按位与逻辑运算的运算规则是:只有对应的位均为1时,与运算的结果才为1,其他的情况均为0。即: 00=0 01=0 10=0 11=1 【例9.2】令a=10,b=8,c=ab,求c的值。 c的内容可以通过下式运算: /* 源文件名:Li9_2.c 功能:令a=10,b=8,c=ab,求c的值。 */ #include stdio.h void main() { int a=10,b=8; int c; c=ab; printf(c=%d\n,c); } 按位与运算的用途有以下几个方面: ⑴可以对某位进行清零操作。此时只需将需要清零的对应位与0位进行“按位与”操作即可。 例如:若低4位清零,只需将其低4位与零相与,高4位与1相与即可,也就是进行以下的操作: 即11110000进行与操作就可以满足要求。 ⑵可以提取某些位。此时只需将需要提取的位与1进行“按位与”操作即可。例如:保留1100011中的最高位,其余位清零,可用如下的操作: 则上述与操作完成后,1100011就变成按位或运算 按位或运算的运算规则是:只有按位或操作的对应位均为零时,结果才为零,其他情况按位或的结果均为1。即,

文档评论(0)

181****7127 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档