网站大量收购闲置独家精品文档,联系QQ:2885784924

第章___位运算.pptVIP

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

本章的教学目标 掌握数值在计算机中表示用源码、反码、补码; 掌握如何求数值的源码、反码、补码; 掌握位运算及其运算符、位与、位或、异或、取反、左移、右移; 熟悉位段的概念; 本章的教学重点: 数值在计算机中的表示 位的运算符 位运算及其运算符 1、按位与── (1)格式:xy (2)规则:对应位均为1时才为1,否则为0:39=1。 例如,39=1: 0011 1001 ──── 0001=1 (3)主要用途:取(或保留)1个数的某(些)位,其余各位置0。 2、按位或──| (1)格式:x|y (2)规则:对应位均为0时才为0,否则为1:3|9=11。 例如,3|9=11: 0011 | 1001 ──── 1011=11 (3)主要用途:将1个数的某(些)位置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)规则:使操作数的各位右移,移出的低位舍弃;高位: 1)对无符号数和有符号中的正数,补0; 2)有符号数中的负数,取决于所使用的系统:补0的称为“逻辑右移”,补1的称为“算术右移”。例如,20 2=5。 说明: (1)x、y和“位数”等操作数,都只能是整型或字符型数据。除按位取反为单目运算符外,其余均为双目运算符。 (2)参与运算时,操作数x和y,都必须首先转换成二进制形式,然后再执行相应的按位运算。 例如,52=20:0101 → 10100,20 2=5:10100 → 00101。 说明 1、复合赋值运算符 除按位取反运算外,其余5个位运算符均可与赋值运算符一起,构成复合赋值运算符: =、|+、^=、=、= 总结位运算符: 【提出问题】设计一个函数,给出一个数的原码,得到该数的补码。 分析:根据补码的定义,一个正数的补码等于该数的原码,一个负数的补码等于该数的反码加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)); } Int get(int value) /*求一个数的补码*/ { int z; z=value0x8000; if(z= =0) z=value; /*符号位为0,为正数*/ else /*符号位为1,为负数*/ { z=~value+1; z=z+0x80000;} /*恢复符号位*/ return z; } 位 段 说明 (1)因为位段类型是一种结构类型,所以位段类型和位段变量的定义,以及对位段(即位段类型中的成员)的引用,均与结构类型和结构变量一样。 (2)对位段赋值时,要注意取置范围。一般地说,长度为n的位段,其取值范围是:0~(2n-1)。 (3)使用长度为0的无名位段,可使其后续位段从下1个字节开始存储。 struct status { unsigned sign: 1; /*符号标志*/

文档评论(0)

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

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

1亿VIP精品文档

相关文档