- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 位运算 11.1 数值在计算机中的表示 1.二进制位与字节 计算机系统的内存储器是由许多称为字节的单元组成的,1个字节由8个二进制位(bit)构成,每位的取值为0/1。最右端的那1位称为“最低位”,编号为0;最左端的那1位称为“最高位”,而且从最低位到最高位顺序,依次编号。 2.数值的原码表示 数值的原码表示是指将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值(以二进制形式表示)的表示形式。为简化描述起见,本节约定用1个字节表示1个整数。 3.数值的反码表示 数值的反码表示分两种情况: 正数的反码:与原码相同。 负数的反码:符号位为1,其余各位为该数绝对值的原码按位取反(1变0、0变1)。 4.数值的补码表示 数值的补码表示也分两种情况: 正数的补码:与原码相同。 负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 已知一个数的补码,求原码的操作分两种情况: 如果补码的符号位为0,表示是一个正数,所以补码就是该数的原码。 如果补码的符号位为1,表示是一个负数,求原码的操作可以是:符号位不变,其余各位取反,然后再整个数加1。 5.数值在计算机中的表示──补码 在计算机系统中,数值一律用补码表示(存储),原因在于:使用补码,可以将符号位和其他位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 11.2 位运算 11.2.1 位运算及其运算符 1.按位与: (1)格式:xy (2)规则:对应位均为1时才为1,否则为0:39=1。 (3)主要用途:取(或保留)1个数的某(些)位,其余各位置0。 2.按位或:| (1)格式:x|y (2)规则:对应位均为0时才为0,否则为1:3|9=11。 (3)主要用途:将一个数的某(些)位置1,其余各位不变。 3.按位异或:^ (1)格式:x^y (2)规则:对应位相同时为0,不同时为1:3^9=10。 (3)主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变。 4.按位取反:~ (1)格式:~x (2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1:在IBM-PC机中,~0=0xffff,~9=0xfff6。 (3)主要用途:间接地构造一个数,以增强程序的可移植性。 5.按位左移: (1)格式:x位数 (2)规则:使操作数的各位左移,低位补0,高位溢出:52=20。 6.按位右移: (1)格式:x位数 (2)规则:使操作数的各位右移,移出的低位舍弃;高位: 11.2.2 说明 1.复合赋值运算符 除按位取反运算外,其余5个位运算符均可与赋值运算符一起,构成复合赋值运算符:=,|+,^=,=,=。 2.不同长度数据间的位运算──低字节对齐,短数的高字节按最高位补位: (1)对无符号数和有符号中的正数,补0; (2)对有符号数中的负数,补1。 11.3 位段简介 1.位段的概念与定义 所谓位段类型,是一种特殊的结构类型,其所有成员均以二进制位为单位定义长度,并称成员为位段。 2.说明 (1)因为位段类型是一种结构类型,所以位段类型和位段变量的定义,以及对位段(即位段类型中的成员)的引用,均与结构类型和结构变量一样。 (2)对位段赋值时,要注意取值范围。一般地说,长度为n的位段,其取值范围是0~(2n-1)。 (3)使用长度为0的无名位段,可使其后续位段从下1个字节开始存储。 11.4 上机实训 实验目的: 位操作是低层次的操作,本实训要求掌握位操作的应用。 实验内容: 位运算交换两个整数 测试计算机的int型的字长 无符号整数转换成二进制数 取一个整数的指定位 11.4.1 位运算交换两个整数 输入两个整数,运用位运算交换它们的值。 程序代码: #include stdio.h main() { int m,n; printf(Please input mn:\n); scanf(%d%d,m,n); printf(m=%d, n=%d\n,m,n); m=m^n; n=n^m; m=m^n; printf(m=%d, n=%d\n,m,n); } 程序运行结果: Please input mn: 8 9 m=8,n=9 m=9,n=8 11.4.2 测试计算机的int型的字长 测试所用计算机的int型数据的字长。 程序代码: #include stdio.h IntLength() { int i; unsigned int u=~0; for(i=0;u0;i++) u=u1; return(i); } void main() { printf
您可能关注的文档
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯2 第3章 UDP应用编程.ppt
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯2 第4章 P2P应用编程.ppt
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯2 第5章 SMTP与POP3应用编程.ppt
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯2 第6章 网络数据加密与解密.ppt
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯2 第7章 三维设计与多媒体编程.ppt
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯习题答案 第01章 习题解答.doc
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯习题答案 第02章 习题解答.doc
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯习题答案 第03章 习题解答.doc
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯习题答案 第05章 习题解答.doc
- C#网络应用高级编程 教学课件 作者 马骏 郑逢斌 沈夏炯习题答案 第06章 习题解答.doc
- 2025至2030全球及中国一次性医疗器械再加工行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030全球及中国彩色电子书行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030中国共享注册表服务行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030激光标线仪产业市场深度调研及发展现状趋势及有效策略与实施路径评估报告.docx
- 2025至2030救援车市场行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030圆刀片切片机行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030中国电子钱包行业市场深度分析及前景趋势与投资报告.docx
- 2025至2030中国抗烧蚀剂行业产业运行态势及投资规划深度研究报告.docx
- 2025-2030中国精密轴承行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025至2030清洁能行业发展研究与产业战略规划分析评估报告.docx
文档评论(0)