C语言教学PPT与习题答案第11章_第1页
C语言教学PPT与习题答案第11章_第2页
C语言教学PPT与习题答案第11章_第3页
C语言教学PPT与习题答案第11章_第4页
C语言教学PPT与习题答案第11章_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、1第第1111章章 C C语言的最小数据单位语言的最小数据单位位位 2第第1111章章 C C语言的最小数据单位语言的最小数据单位位位 n11.1 位运算基础 n11.2 位运算符 n11.3 位运算实例 n11.4 位段 n11.5 小结 311.1 位运算基础 n11.1.1 位与字节n11.1.2 原码n11.1.3 反码n11.1.4 补码 411.1.1 位与字节n位(bit):表示一个二进制数码0或1,是电子计算机中最小的数据单位。n字节(Byte):8个二进制位构成1个“字节”,它表示作为一个完整处理单位的8个二进制数码。它是存储空间的基本计量单位。其中,最右边的一位称为“最低有

2、效位”或“最低位”。最左面的一位称为“最高有效位”或“最高位”,如图所示:511.1.2 原码n原码表示是机器数的一种简单的表示法。其符号位用0表示正号,用1表示负号,数值用二进制形式表示。设有一数为X,则原码表示可记作(X)原。例如:(11)原=00001011(-11)原=10001011n原码表示数的范围与二进制位数有关。当用8位二进制来表示整数原码时,其表示范围:n最大值为01111111,其真值为(127)10。最小值为11111111,其真值为(-127)10。对0有两种表示形式:n(+0)原=00000000n(-0)原=10000000n+0和-0代表的都是0,但表示方法却有两

3、种。 611.1.3 反码n用原码进行两个整数的加法运算中没有问题,问题出现在带符号位的负数身上。为了解决这个问题,可对除符号位外的其余各位逐位取反,就产生了反码。 n机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码相同,如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作(X)反。例如:(11)反=(00001011)原=00001011(-11)反=(10001011)原=11110100711.1.4 补码n在反码中0还是有正负之分。而在人们的计算概念中零是没有正负之分的。n另外,原码和反码不便于计算机内的运算,因

4、为在计算时要单独处理符号位,这很不方便。要是有一种方法能将符号位和其它位统一处理、对减法也按加法处理就好了。n为了解决这个问题于是就引入了补码概念。所以补码的设计目的是:n(1)使符号位能与有效值部分一起参加运算,从而简化运算规则。补码机器数中的符号位,并不是强加上去的,是数据本身的自然组成部分,可以正常地参与运算。n(2)使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。 n机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样,如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反后整个数加1得到的。 811.2 位运算符n11.2.1 按位与运算

5、符n11.2.2 按位或运算符n11.2.3 按位异或运算符n11.2.4 按位取反运算符n11.2.5 左移运算符n11.2.6 右移运算符 911.2.1 按位与运算符n按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进制位进行“与”运算。即只有对应的两个二进制位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。即:0&0=0 0&1=0 1&0=0 1&1=1【例11-1】本实例演示了求9&5。n按位与运算符“&”有以下应用:n(1)清0 n(2)保留某些位)保留某些位 n(3)取某个数中某些指定位 1011.2.2 按位或运算符n按位或运算符“|”是双目运算

6、符。其功能是参与运算的两数各对应的二进制位相或。只要对应的二个二进制位有一个为1时,结果位就为1,否则为零。参与运算的两个数均以补码出现。即:0|0=0 0|1=1 1|0=1 1|1=1【例11-2】本实例演示了求9|5。 1111.2.3 按位异或运算符n按位异或运算符“”是双目运算符。其功能是参与运算的两数各对应的二进制位相异或,即当两个对应的二进制位相异时,结果为1,否则为0。参与运算数仍以补码出现。即:00=0 01=1 10=1 11=0【例11-3】本实例演示了求95。1211.2.4 按位取反运算符n按位取反运算符“”是单目运算符,具有右结合性。其功能是对参与运算数的各个位按位

7、求反,即0变为1,1变为0。如9的运算为: (00001001)结果为:11110110。 1311.2.5 左移运算符n左移运算符“”是双目运算符。其功能把“”左边运算数的各二进制位全部左移若干位,由“”是双目运算符。其功能是把“”左边的运算数的各二进制位全部右移若干位,“”右边的数指定移动的位数。n在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。Turbo C和很多系统规定为补1。n右移一位就相当于该数除以2,右移n位就相当于该数除以2n。上面的例子中15左移2位后变成3=15/22。 【例11-4】本实例演示了无符号整

8、数的右移运算。【例11-5】本实例演示了有符号整数的右移运算。 1511.3 位运算实例n【例11-6】基本思路:由上节的学习可知,如果想保留一个数的某些位,就让这个数和一个新数做与运算,原数中想保留的位在新数中相应的位为“1”、其他位在新数中相应的位为“0”。 n【例11-7】基本思路:构造一个新数,最高位“1”,剩下所有位为“0”。因为要从高到低输出正整数的各二进制位,也就是要保留当前数的最高一位。每次将当前的最高位取出(保留),并输出后再将该数左移1位,然后将当前按最高位保留输出后,将该数左移1位,直到所有位输出为止。1611.4 位段n11.4.1 位段基础知识n11.4.2 位段的引

9、用1711.4.1 位段基础知识n所谓“位段”,又称为“位域”或“位字段”,是把一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。n位段是一种特殊形式的结构体类型中的成员,它和前面介绍的结构体类型的不同之处是以位为单位来定义结构体成员的长度。n位段定义与结构体定义相仿,其形式为:struct 位段结构名 位域列表 ;n其中位域列表的形式为: 类型说明符 位域名:位域长度; 1811.4.2 位段的引用n位段的引用和结构成员的引用相同,其一般形式为:位段变量名.位段名。例如:data.a,data.bn位段可以赋值,例如:data.a=54;data.b=3;【例11-8】本实例演示了位段的引用。 1911.5 小结n前

温馨提示

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

评论

0/150

提交评论