C语言程序设计程(第2版)课件第12章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言程序设计程(第2版)课件第12章

第12章 位运算 本章要点 位运算符和位的逻辑运算 位的复合运算 位段的概念与运用 本章难点 对位段的理解 12.1 二进制位运算概述 12.2 位的运算符 例: 设计一个函数,给出一个数的原码,得到该数的补码。 分析:根据补码的定义,一个正数的补码等于该数的原码,一个负数的补码等于该数的反码加1。假设a为16位整数,则步骤为: (1) 判别给定整数是正数还是负数。方法是: z=a0x8000; 若z等于0,则a为正数;若为非0,则a为负数。 (2) 如果z非0,有z=~a+1+0x80000;否则z=a。 (3) 返回z。 程序如下: #includestdio.h main() {int a,get(int); printf(输入一个十六进制数:\n); scanf(%x,a); printf(\t它的补码是:%x\n,get(a));} get(int value) /*求一个数的补码*/ { int z; z=value0x8000; if(z= =0) z=value; /*符号位为0,为正数*/ else /*符号位为1,为负数*/ { z=~value+1; z=z+0x80000;} /*恢复符号位*/ return z; } 12.3 位段 12.4 小结 (1) 按位与(“”)。C语言规定按位与的运算规则为:如果参与运算数据的二进制位都为1,则结果为1;否则只要有0出现的那个二进制位结果都为0。 (2) 按位或(“|”)。按位或的运算规则为:只要参与运算的两个数中对应的二进制位为1,则结果的对应位为1;否则为0。 (3) 按位异或(“^”)。按位异或运算的运算规则为:如果两个运算对象的对应位不相同,则结果为1;否则为0。 (4) 按位取反(“~”)。按位取反运算的规则为:将一个数中的各位二进制数取反,即1变为0,0变为1。 (5) 左移运算(“”)。左移运算的运算规则为:将运算对象中的每个二进制位向左移要求的位数,从左边移出去的高位部分被丢弃,右边空出的部分用0填补。 (6) 右移运算符(“”)。右移运算符的运算规则是:将运算对象中的每个二进制位向右移若干位,从右边移出的低位部分被舍弃。对无符号的数来说,左边空出的部分补0;对有符号数来说,如果符号位为0。则空出的高位部分补0,对于有符号数中的负数,取决于所使用的系统:补0的称为“逻辑右移”,补1的称为“算术右移”。 (7) 所谓位段就是将一个机器字分成几段,以占用二进制位的数目来管理数据,它常常是用来表示和处理不需要整字节存储的信息,这样的信息可能是3位,也可能是9位……甚至是它们的组合。位段类型也称为数据结构体类型,因此其类型定义的方法和结构体相同,不过对于非整数字节的成员,应当使用unsigned或unsigned int来定义成员,并指明所占的位数。 * 1. 位(bit):是指二进制中的位,它是计算机能 处理的最小单位。 2. 字节(byte):是计算机处理的基本单位。计算 机的内存是按字节进行分配的。一个字 节有八位二进制数组成。所以我们在C语 言中数据类型都是以字节为基本单元。 3. 补码:一个正数的补码是其本身;一个负数的 补码是其绝对值按位取反后加1。计算 机是以补码的形式存放数的。 例如:-7 的补码是 1111 1111 1111 1001 一、位运算的概念 位运算:以二进制位为单位的运算。 二、位运算符 “位运算”仅 限于整数(整型数和字符型)。 位逻辑运算符(~、、^、| ) 位移位运算符(、) 位复合赋值运算符( =、|=、^=、=、=) 5 按位或 ︱ 4 按位与或 ^ 3 按位与 2(同级) 右移 2 左移 1(高) 按位求反 ~ 优先级 含义 运算符 a=a︱b a︱=b ︱= a=a^b a^=b ^= a=ab a=b = b= bn b=n = a=a2 a=2 = 等价的表达式 表达式 扩展运算符 表12.1位运算符及其功能 12.2扩展运算符及其含义 1. 位逻辑运算符 ~ (按位求反)、 (按位与)、^ (按位异或) 、| (按位或) 运算规则: ~1=0 ~0=1 00=0 01=0 10=0 11=1 0^0=0 0^1=1 1^0=1 1^1=0 0 | 0=0 0 | 1=1 1 | 0=1 1 | 1=

文档评论(0)

kejie8080230 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档