C语言基础 第6章.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文档。上传文档
查看更多
第6章 位 运 算 6.1 位运算符及位运算表达式 位运算是对二进制数据以位为单位(bit)进行的运算。C语言提供了六种位运算符。 参加运算的操作数可以是char类型、int类型和long类型的变量或常量。实型是不能进行位运算的。 表6.1.1列出了所有位操作的运算符。 按位运算符把操作对象看作是二进制数,并以位为单位地对它们进行运算,运算的结果为整型数,可用十进制数、八进制数或十六进制数表示。 移位运算的优先级排在算术运算之后,关系运算之前。 6.2 位逻辑运算 表6.2.1给出四种按位逻辑运算符的运算规则。表中a和b是位运算对象的二进制位值。 表6.2.1 例6.2.1 设有无符号整型变量x和y,它们的值用八进制和二进制表示如下: ? x=0112(0000000001001010) y=0123(0000000001010011) ? 计算表达式~x,xy,x|y和x^y的值。 根据表6.1.2所示相应位逻辑运算符的定义,上列表达式计算如下: x 0 000 000 001 001 010 ~ 1 111 111 110 110 101 y 0 000 000 001 010 011 xy 0 000 000 001 000 010 x 0 000 000 001 001 010 y 0 000 000 001 010 011 x|y 0 000 000 001 011 011 x^y 0 000 000 000 011 001 例6.2.2 对两个整型数a和b进行“位非”、“位与”、“位或”和“位异或”运算并输出运算结果。操作数和运算结果都用八进制数表示。 程序如下: #includestdio.h main() { int a=0112,b=0123; printf(~%o=%o\n,a,~a); printf(%o%o=%o\n,a,b,ab); printf(%o|%o=%o\n,a,b,a|b); printf(%o^%o=%o\n,a,b,a^b); } 程序的输出为: ~112=177665 112123=102 112|123=133 112^123=31 位逻辑运算的重要应用之一,是对数据的某一位或若干位(二进制)进行处理。如判断某一位是否为0或为1;将某一位或若干位反转,将某位或若干位置0或置1等等。一般的处理原则可以简单归纳如下: 一个二进制位与1进行“位或”运算,能使该位的值为1,与0进行“位或”运算,能使该位的值保持不变。 一个二进制位与1进行“位与”运算,如果结果为0,则可判定该位原来值为0,反之,可判断该位原来值为1;与0进行“位与”运算,则可置该位为0。 一个二进制位与1进行“位异或”运算,可使该为取反。 例6.2.3 编写程序,用户输入一个字符,程序输出该字符ASCII码的二进制值。 字符在内存中占一个字节。判断数据的某一位是0还是1,可利用上述的“按位与”运算实现。如果要想知道字符的最高位的值,可以用第8位为1其余位为0的数(十进制数的128)与该字符的值进行“按位与”运算。其结果就是该字符第8位的值。用同样方法可以求出其他各位的值。 例如,字符A的ASCII码为:0100 0001,如要判断第8(最高)位是1还是0,可用数128(1000 0000)与之进行“位与”运算: 0000 0000 结果为0,由此可知,字符A的ASCII码的第8位为0。为判断第7位,则需要用数128/2,即64,来与ASCII码进行“位与”运算,依此类推,可以求出所有各位二进制码。根据这个原理,编写出程序如下: #include stdio.h main() { char ch; int I; printf(enter a char:); scanf(%c, ch); for(i=128; i0; i=i/2) { if(ich) printf(1); else printf(0); } printf(\n); } 运行程序后,要求用户输入一个字符

文档评论(0)

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

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

1亿VIP精品文档

相关文档