C语言具有位逻辑运算和移位运算的独特功能.ppt

C语言具有位逻辑运算和移位运算的独特功能.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言具有位逻辑运算和移位运算的独特功能ppt整理

12.1 位运算 C语言具有位逻辑运算和移位运算的独特功能,参与位运算的运算量必须是整数。位逻辑运算包括、|、∧、~四种运算,移位运算有、两种运算。其中~位单目运算符。 12.1.1 按位与 12.1.2 按位或 12.1.3 按位异或 12.1.4 按位取反 12.1.5 按位左移 12.1.6 按位右移 12.1.7 位运算的复合赋值运算符 12.1.1 按位与 12.1.2 按位或 12.1.3 按位异或 12.1.4 按位取反 12.1.5 按位左移 12.1.6 按位右移 12.1.7 位运算的复合赋值运算符 12.2 位段的概念 * * ? ? ? ? ? ? ? ? ? ? ? ? ? ? 参与运算的量,如果相对应的两位都为1,则该位的结果值为1,否则为0,即: 00==0 01==0 10==0 11==1 如:a的值为0x1234,b的值为0x00,ab运算的结果c应为: a 0001 0010 0011 0100 b 0000 0000 1111 1111 c 0000 0000 0011 0100 按位与常用于将某个运算量的某些位清0或提取某些位的值,如本例中,将变量的高8位清0,同时保留或提取低8位的值,可用一个高8位为0,低8位为1的值0x00ff和它进行按位与。 ? ? ? ? ? ? 参与运算的量,如果相对应的两位都为0,则该位的结果值为0,否则为1,即: 0|0==0 0|1==1 1|0==1 1|1==1 如:a的值为0x1234,b的值为0x00,a|b运算的结果c应为: a 0001 0010 0011 0100 |b 0000 0000 1111 1111 c 0001 0010 1111 1111 按位或常用于将某个运算量的某些位置1,如本例中将变量的低8位置1,高8位不变,可用一个高8位为0,低8位为1的值0x00ff和它进行按位或。 ? ? ? ? ? ? 参与运算的量,如果相对应的两位相异,则该位的结果为1,否则为0,即: 0∧0==0 0∧1==1 1∧0==1 1∧1==0 如:a的值为0x1234,b的值为0x00,a∧b运算的结果c应为: a 0001 0010 0011 0100 ∧b 0000 0000 1111 1111 c 0001 0010 1100 1011 按位异或有“与1异或”该位翻转,“与0异或”该位不变的规律。如本例中用0x00ff进行按位异或,使变量a的低8位翻转,高8位不变。 ? ? ? ? ? ? 将参与运算量的相对应位的值取反,即1变0,0变1。 如:a的值为0x1234,~a运算的结果c应为: ~a 0001 0010 0011 0100 c 1110 1101 1100 1011 ? ? ? ? ? ? 按位左移是将一个运算量的各位依次左移若干位,低位补0,高位舍弃不要。 假设机器字长为8位,变量a的值为16,将a左移二位,即a=a2: 左移前 0001 0000 左移后 0100 0000 由此看出,左移一位相当于该数乘2,左移二位相当于乘4,即22,但这要以该数左移之后不“溢出”为前提。所谓“溢出”指该数已超过机器字长所能容纳的范围,如该例若继续左移二位,该数为16× 24=256,超出了字长8位的表示范围(257),即产生了溢出。 ? ? ? ? ? ? 按位右移是将一个运算量的各位依次右移若干位,低位被移出,高位对无符号数补0,对有符号数要按最高符号位自身填补。 右移一位相当于该数除以2,但有可能带来误差。假设机器字长为8位,变量a值为15,将a右移二位,即a=a2: 右移前 0000 1111 右移后 0000 0011 如果a是带符号的负数,a=-16,存放在机器中的补码为1111 0000,则a=a2,值为- 4。 右移前 1111 0000 右移后 1111 1100 表12.

文档评论(0)

zyzsaa + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档