ImageVerifierCode 换一换
格式:PPT , 页数:22 ,大小:346.50KB ,
文档编号:5787073      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5787073.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(momomo)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(《C语言程序设计实用教程》课件第8章 位操作程序设计.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

《C语言程序设计实用教程》课件第8章 位操作程序设计.ppt

1、8.1 位运算符位运算符8.2 位域位域8.3 位操作程序设计综合举例位操作程序设计综合举例8.1位运算符位运算符n6种位运算符种位运算符n位与位与&n位或位或|n位异或位异或 n位取反位取反 n 位左移位左移 n位运算的操作数为整型位运算的操作数为整型(char,short,int,long),运算结果是整型。,运算结果是整型。8.1位运算符位运算符8.1位运算符位运算符1.按位与按位与&参与运算的两个值,如果两个相应位都为参与运算的两个值,如果两个相应位都为1,则,则该位的结果为该位的结果为1,否则为,否则为0。即:即:0&0=0,0&1=0,1&0=0,1&1=1例如:例如:8.1位运算

2、符位运算符1.按位与按位与&n用来对操作数中的若干位置用来对操作数中的若干位置0,或者取操作数中,或者取操作数中的若干指定位。的若干指定位。例如:例如:char x;(1)将)将x的第的第4位和第位和第1位置位置0,11110110 x=x&0 xf6;掩码掩码0 xf6的的b3=0,b0=0 (2)取取x的低的低4位:位:x=x&0 x0f;掩码掩码0 x0f的的b7 b6 b5b4=0000 b3 b2 b1b0=1111 8.1位运算符位运算符2 按位或按位或|参与运算的两个值,只要两个相应位中有一参与运算的两个值,只要两个相应位中有一个为个为1,则该位的结果为,则该位的结果为1。即:即

3、:0|0=0,0|1=1,1|0=1,1|1=1例如:例如:8.1位运算符位运算符2.按位或按位或|n用来把操作数的某些特定位置用来把操作数的某些特定位置1.例如:将例如:将int 型的变量型的变量a的的b3、b4位置位置1:a=a|0 x18 掩码:掩码:00011000 8.1位运算符位运算符3.按位异或按位异或 参与运算的两个值,如果两个相应位不同,则参与运算的两个值,如果两个相应位不同,则结果为结果为1,否则为,否则为0。即:即:00=0,10=1,01=1,11=0例如:例如:8.1位运算符位运算符3.按位异或按位异或 n使某些特定的位翻转。使某些特定的位翻转。n如果是某位与如果是某

4、位与0异或,结果是该位的原值;异或,结果是该位的原值;n如果是某位与如果是某位与1异或,则结果与该位原来的异或,则结果与该位原来的值相反。值相反。例如:要使例如:要使11010110的的b4、b5翻转翻转 将数与将数与00011000进行按位异或运算。进行按位异或运算。11010110 00011000 110011108.1位运算符位运算符4 按位取反按位取反 一元运算法,对数据的每个二进制位取反一元运算法,对数据的每个二进制位取反.即把即把1变为变为0,把,把0变为变为1例如:例如:8.1位运算符位运算符5移位移位(1)左移运算()左移运算()将一个数的各二进制位全部右移若干位。将一个数的

5、各二进制位全部右移若干位。右移后,低位舍弃右移后,低位舍弃;高位:若是无符号数高位:若是无符号数,补补0;若是有符号数,补若是有符号数,补“符号位符号位”。n一个无符号数,右移一位相当于除一个无符号数,右移一位相当于除2取商取商.8.1位运算符位运算符5移位移位 某一变量所包含的各二进位按指定的方某一变量所包含的各二进位按指定的方向移动指定的位向移动指定的位.例例8-1 位运算的应用位运算的应用void main()unsigned int w1=0 x155,w2=0 x1c7,w3=0 x52;int w4=-128,w5=128;printf(%x%x%x n,w1&w2,w1|w2,w

6、1w2);printf(%x%x%x n,w1,w2,w3);printf(%x%x%x n,w1w2,w1&w2,w1|w2|w3);printf(%x%x n,w1|w2&w3,w1&w2|w3);printf(%x%x n,(w1&w2),w1|w2);printf(%d%d n,w41,w51);8.2位域位域 BitFieldn有些信息在存储时,并不需要占用一个完整的有些信息在存储时,并不需要占用一个完整的存储单元,存储单元,而只需一个或几个二进制位。而只需一个或几个二进制位。例如例如,存放一个开关量时,只有存放一个开关量时,只有0和和1 两种状态,两种状态,只要用一个二进位即可。只

7、要用一个二进位即可。n位域位域:把一个存储单元中的二进制划分为几个把一个存储单元中的二进制划分为几个不同的区域,并说明每个区域的位数。不同的区域,并说明每个区域的位数。n每一个域有一个域名,允许在程序中按域名进行操每一个域有一个域名,允许在程序中按域名进行操作。作。8.2位域位域n位域的声明形式:位域的声明形式:struct 结构体名结构体名 类型类型1 成员成员1:长度长度;类型类型2 成员成员2:长度长度;类型类型n成员成员3:长度长度;位域变量位域变量;8.2位域位域例如:例如:struct BitSeg1 unsigned char a:4;unsigned char b:3;unsi

8、gned char c:1;flags;声明位域变量声明位域变量flags由三个成员由三个成员a、b、c组成,组成,a占有占有4bits,b占有占有3bits,c占有占有1bits,整个变,整个变量量flags分配的存储单元大小为分配的存储单元大小为char类型的存储类型的存储单元,大小为单元,大小为1Byte。8.2位域位域例如:例如:struct BitSeg2 unsigned char f1:1;unsigned char f2:1;unsigned char f3:1;unsigned char f4:3;unsigned char f5:7;/从第二个从第二个char型的存储单元分

9、配成员型的存储单元分配成员f5;声明的结构类型声明的结构类型struct BitSeg2占用的空间大占用的空间大小为小为2Bytes。其中成员。其中成员f1、f2、f3、f4占用占用第一字节,第一字节,f5占用第二字节。占用第二字节。例例8-2 位域的应用。位域的应用。typedef struct unsigned char f1:1;unsigned char f2:1;unsigned char f3:1;unsigned char type:4;unsigned char index:8;Flags;void main()Flags flags;flags.f1=1;flags.f2=0

10、;flags.f3=1;flags.type=0 x7;flags.index=0 x81;printf(%x%x%x%1x%2xn,flags.f1,flags.f2,flags.f3,flags.type,flags.index);printf(The size of variable flags is%dn,sizeof(flags);1 0 1 7 81The size of variable flags is 28.3位操作程序设计综合举例位操作程序设计综合举例 例例8-3 将一个无符号八位二进制数的低将一个无符号八位二进制数的低4位与高位与高4位进行交换,并以十六进制格式位进行交换

11、,并以十六进制格式输出原数和交换后的结果。输出原数和交换后的结果。#include void main()unsigned char flag1=0 x8f;unsigned char flag2,flag3,flag4;flag2=flag1&0 x0f;/屏蔽高屏蔽高4位后位后,将低将低4位送给位送给flag2flag2=flag2=4;/将高将高4位移到低位移到低4位位flag4=flag2|flag3;printf(%x n,flag1);printf(%x n,flag4);8ff8例例8-4 编写一个带参数的宏编写一个带参数的宏clearBit(x,n),用于,用于将将x的第的第n位置位置0,假设,假设n=0。#include /(0 x1n)是第是第n位是位是1,其他位是,其他位是0#define clearBit(y,n)y&=(0 x1n)void main()unsigned x=0 xfe78feaf;unsigned y=0 xfeaf;clearBit(x,31);clearBit(y,1);printf(x=%x,y=%xn,x,y);x=7e78feaf,y=fead本章小结本章小结

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|