++程序设计第三章.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程序设计第三章

* 3.4.7 位运算 位运算是一种对运算对象按二进制位进行操作的运算,而且是作用于运算对象的每一个位上(而并不是只对其中的某一个位进行运算)。位运算的运算对象只能是整型数据(包括字符型), 且运算结果仍为整型数据。 1、位运算符 C++提供如下6个位运算符:~(单目, 按位求反)、(双目, 按位与)、|(双目, 按位或)、^(双目, 按位异或)、(双目, 按位左移)、以及(双目, 按位右移)。 下面说明这6个运算符的使用含义。 unsigned char d1=38, d2=44; 设有无符号字符型变量d1, 它具有初值38, 即二进制 及无符号字符型变量d2, 它具有初值44, 即二进制 * 那么(d1=38d2=44 d1d2的结果将是36(00101100进行按位与, 即逐位进行与运算,得结即10进制的36); d1|d2的结果将是46(00101100进行按位或,即逐位进行或运算,得结; d1^d2的结果将是10(00101100进行按位异或,即逐位进行异或运算,得结; d11的结果将是76(每一位都向左移动一个位后得结; d11的结果将是19(每一位都向右移动一个位后得结; 将~d1的结果赋值给无符号字符型变量d3,而后按int值输出d3将得结果217(每一位都取反后得结。 * 执行如下的程序,可对上述结果进行验证: #include iostream.h void main() { unsigned char d1=38, d2=44; coutunsigned char d1=38, d2=44;endl; coutd1=d1 d2=d2endl; coutint(d1)=int(d1) int(d2)=int(d2)endl; cout---------------------------endl; coutd1d2 = (d1d2)endl; coutd1|d2 = (d1|d2)endl; coutd1^d2 = (d1^d2)endl; coutd11 = (d11)endl; coutd11 = (d11)endl; cout~d1 = (~d1)endl; unsigned char d3 = ~d1; cout---------------------------endl; coutunsigned char d3=~d1;endl; coutint(d3) = int(d3)endl; cout---------------------------endl; } * 执行程序后,输出结果如下: unsigned char d1=38, d2=44; d1= d2=, int(d1)=38 int(d2)=44 --------------------------- d1d2 = 36 d1|d2 = 46 d1^d2 = 10 d11 = 76 d11 = 19 ~d1 = -39 --------------------------- unsigned char d3=~d1; int(d3) = 217 --------------------------- * 注意: (1)之所以d1d2的结果为36,这是因为进行位运算时,使用了字符变量d1与d2的ASCII码值38与44,所以计算结果也为数值性的36。 (2)若使用语句:“coutd1d2=d1d2endl;” 时,会产生语法错误! 其原因是算符“”的优先级低于算符“”(被重载的插入运算符“”与移位运算符“”的优先级相同!)。 (3)程序中直接输出~d1时所得结果为-39,是因为系统认为首位为“1”的数据为负数(系统是按照“反码表示法”来表达数据的)。若将~d1的结果赋值给无符号字符型变量d3,而后按int值输出d3将得到结果217。 * 再看另外几个有关输出的例子: cout22+8*2 =22+8*2endl; //ok! 输出“22+8*2 =38” //算术运算符优先级高于“”,可以不加括号 co

文档评论(0)

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

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

1亿VIP精品文档

相关文档