C语言程序设计基础课件 第10章 位运算_第1页
C语言程序设计基础课件 第10章 位运算_第2页
C语言程序设计基础课件 第10章 位运算_第3页
C语言程序设计基础课件 第10章 位运算_第4页
C语言程序设计基础课件 第10章 位运算_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章位运算10.1位运算符10.2位运算符的运算功能程序设计基础1第10章位运算教学目标掌握结构体数据类型和结构体变量。了解位运算符的运算功能。程序设计基础210.1位运算符C语言中,位运算的对象只能是整型或字符型。C语言中提供了6种基本的位运算符。程序设计基础3运算符含义优先级单双目~取反1(高)单目<<左移2双目>>左移3双目&按位与4双目^按位异或5双目|按位或6(低)双目10.2位运算符的运算功能1.取反运算取反运算符~,功能是对操作数按二进制位取反,即把0变成1,1变成0。程序设计基础410.2位运算符的运算功能【例10.1】求表达式~-1、~0、~39的值。分析:以8位二进制数的形式表示上面的各数。程序设计基础510.2位运算符的运算功能分析:-1在计算机内部按二进制补码形式存储,为1111111111111111,对其按位求反,结果为0。0在计算机内部的二进制数为:0000000000000000,对其按位求反,结果为1111111111111111,这是-1在计算机内部的存储形式。十进制数39在计算机内部对应的二进制数为0000000000100111,对其按位取反,得到结果:1111111111011000,这个数是-40的二进制形式,按十进制输出为-40。程序设计基础610.2位运算符的运算功能执行语句printf("~-1=%d,~0=%d,~39=%d",~-1,~0,~39);,输出的结果为~-1=0,~0=-1,~39=-40程序设计基础710.2位运算符的运算功能2.左移运算左移运算符<<,功能是把<<左边的运算数,按二进制位依次左移右边运算数指定的位数。程序设计基础810.2位运算符的运算功能【例10.2】求1<<2、0<<3、-1<<8、-1<<32的值。分析:以8位二进制数的形式表示上面的各数。程序设计基础910.2位运算符的运算功能分析:1的32位二进制数为00000000000000000000000000000001,左移2位得到00000000000000000000000000000100,是4的二进制数。0无论右移几位都是补0,故0<<3的结果仍为0。程序设计基础1010.2位运算符的运算功能分析:-1的32位二进制数补码为11111111111111111111111111111111,故左移8位为11111111111111111111111100000000,对应十进制数-256,若左移32位,则32位1被移出补成32位0,对应十进制数0。程序设计基础1110.2位运算符的运算功能执行语句printf("1<<2=%d,0<<3=%d,-1<<8=%d,-1<<32=%d",1<<2,0<<3,-1<<8,-1<<32);输出的结果1<<2=4,0<<3=0,-1<<8=-256,-1<<32=0程序设计基础1210.2位运算符的运算功能3.右移运算右移运算符>>,功能是把<<左边的运算数,按二进位依次右移右边运算数指定的位数。程序设计基础1310.2位运算符的运算功能【例10.3】求-1>>4,0>>2,8>>2,-8>>2的值。分析:以8位二进制数的形式表示上面的各数。程序设计基础1410.2位运算符的运算功能分析:类比例10.2分析上面各表达式的输出结果。-8的32位二进制数为111111111111111111111000,右移2位变为111111111111111111111110,即为-2。程序设计基础1510.2位运算符的运算功能分析:类比例10.2分析上面各表达式的输出结果。-8的32位二进制数为111111111111111111111000,右移2位变为111111111111111111111110,即为-2。程序设计基础1610.2位运算符的运算功能执行语句printf("-1>>4=%d,0>>2=%d,8>>2=%d,-8>>2=%d",-1>>4,0>>2,8>>2,-8>>2);输出的结果为-1>>4=-1,0>>2=0,8>>2=2,-8>>2=-2程序设计基础1710.2位运算符的运算功能4.按位“与”运算按位“与”运算符“&”是双目运算符,其功能是参与运算的左、右两侧的运算数按对应位置的二进制进行按位“与”运算。程序设计基础1810.2位运算符的运算功能【例10.4】求-1&4,0&4,15&23,240&23的值。分析:以8位二进制数的形式表示上面的各数。程序设计基础1910.2位运算符的运算功能分析:-1其补码为11111111,4的二进制数为00000100,11111111&00000100,一个数和1相“与”的结果保持原数,比如1&1结果为1,0&1结果为0。因此,11111111&00000100的值为00000100,即用-1进行与运算的结果是保持原数,故-1&4的结果为4。0的二进制数为00000000,一个数和0相“与”的结果是0,故0&4的结果为0。15的二进制数为00001111,23的二进制数为00010111,00001111&00010111的结果为00000111,即用00001111屏蔽了数23对应二进制数的高4位,故15&23的结果为7。240的二进制数为11110000,故240&23屏蔽了23对应二进制数的低4位,结果为00010000,故240&23的结果为16。程序设计基础2010.2位运算符的运算功能执行语句printf("-1&4=%d,0&4=%d,15&23=%d,240&23=%d",-1&4,0&4,15&23,240&23);,输出的结果为-1&4=4,0&4=0,15&23=7,240&23=16。程序设计基础2110.2位运算符的运算功能5.按位“或”运算按位“或”运算符“|”是双目运算符,其功能是参与运算的左、右两侧的运算数按对应位置的二进制进行按位“或”运算。程序设计基础2210.2位运算符的运算功能【例10.5】求-1|4,0|4,15|23,240|23的值。分析:以8位二进制数的形式表示上面的各数。程序设计基础2310.2位运算符的运算功能分析:-1,其补码为11111111,4的二进制数为00000100,一个数和1相“或”的结果变为1,比如1|1结果为1,0|1结果为1。因此,11111111|00000100的值为11111111,即用-1和一个数a进行按位或运算,结果是一定是把a的所有位都变成1,即结果为-1,故-1&4的结果为-1。0的二进制数为00000000,一个数和0相“或”的结果是保持原值,故0|4的结果为4。15的二进制数为00001111,23的二进制数为00010111,00001111|00010111的结果为00011111,故15|23的结果为31。240的二进制数为11110000,故240|23把23对应二进制数的高4位置1,后4位不变,结果为11110111,故240123的结果为247。程序设计基础2410.2位运算符的运算功能执行语句printf("-1|4=%d,0|4=%d,15|23=%d,240|23=%d",-1|4,0|4,15|23,240|23);,输出的结果为-1|4=-1,0|4=4,15|23=31,240|23=247。程序设计基础2510.2位运算符的运算功能6.按位“异或”按位“异或”运算符“^”是双目运算符,其功能是参与运算的左、右两侧的运算数按对应294C语言程序设计基础位置的二进制进行按位“异或”运算。程序设计基础2610.2位运算符的运算功能【例10.6】求-1^4,0^4,15^23,240^23的值。分析:以8位二进制数的形式表示上面的各数。程序设计基础2710.2位运算符的运算功能分析:以8位二进制数的形式表示上面的各数。-1的补码为11111111,4的二进制数为00000100,11111111^00000100的值为11111011,即用-1和一个数a进行按位或运算,结果是一定是把a的所有是1的位都变成0,其他都变成1,11111011是-5的二进制补码。故-1^4的结果为-5。0的二进制数为00000000,一个数和0相“异或”的结果是保持原值,故0^4的结果为4。15的二进制数为00001111,23的二进制数为00010111,00001111^00010111的结果为00011000,15^23的结果为24。240的二进制数为11110000,故240^23把23对应二进制数的高4位变反,后4位不变,结果为11100111,故240^23的结果为231。程序设计基础2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论