c语言位运算说明加举例.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  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文档。上传文档
查看更多
请记住: 计算机存储的是源码 但是在运算的时候使用补码进行运算 -89 按两字节来运算 先得到二进制的数 0x59 -b 0101 1001 源码 1000 0000 0101 1001 反码 符号位不变,其他位按位取反 1111 1111 1010 0110 补码 +1 1111 1111 1010 0111 再把这个数取回源码 先得到反 1000 0000 0101 1000 再得到补+1 得到源 1000 0000 0101 1001 按位与 逻辑上这个符号与 相似 (全是真才为真) 0100 1000 0110 1001 相 得到 0100 1000 87 -23 得到 0x57 0000 0000 0101 0111 -23 的 补码为 0x17 -b0001 0111 1000 0000 0001 0111 1111 1111 1110 1000 ==反码 1111 1111 1110 1001 ==补码 0000 0000 0101 0111 1111 1111 1110 1001 0000 0000 0100 0001 ==最后得到的是这个 | 按位或 逻辑跟这个||符号相似 (有一个为真就为真) 1010 1010 1110 1100 相 | 得到 1110 1110 56 | -14 0x38 0000 0000 0011 1000 -14 -b 0000 1110 1000 0000 0000 1110 1111 1111 1111 0001 1111 1111 1111 0010 0000 0000 0011 1000 1111 1111 1111 0010 1111 1111 1111 1010 1000 0000 0000 0101 ==取反 1000 0000 0000 0110 ==这是得到的源码 符号为不变 这是-6 ~ 按位取反 逻辑跟 ! 相似 对一个数取反得到的是它的相反数在减1 ~ 5 0000 0101 1111 1010 1000 0101 1000 0110 -6 ~3 == -4 ~(-5) == 4 0000 0011 1111 1100 取反 这个是补码 1000 0011 得到反码 1000 0100 源码 0000 0101 1111 1010 1111 1011 这里是取反+1 0000 0100 ^ 异或 不同为一相同为零 0010 1100 0011 0010 ^ 0001 1110 18 ^ -32 0x12 0000 0000 0001 0010 1000 0000 0010 0000 -32 0000 0000 0001 0010 1111 1111 1110 0000 ^ -32的补码 1111 1111 1111 0010 得到的这个也是补码 1000 0000 0000 1101 1000 0000 0000 1110 这个是源码 计算 a = a ^ b b = a ^ b a = a ^ b a = -17 b = 30 a = a ^ b 1000 0000 0001 0001 -17源码 1111 1111 1110 1111 补码 0000 0000 0001 1110 1111 1111 1111 0001 这是补码 b = a ^ b 1111 1111 1111 0001 新A 0000 0000 0001 1110 1111 1111 1110 1111 新B a = a ^ b 1111 1111 1111 0001 1111 1111 1110 1111 0000 0000 0001 1110 30 1000 0000 0001 0001 -17 这是对新B取反得到 ayub = o_a ^ o_b; n_b = ayub ^ b == o_a; n_a = a ^ b == ayub ^ n_b == ayub ^ o_a == o_b; 上面 ayub的意思是 a^b的区别 左移 8 2 0000 0000 0000 1000 000000 0000 0010 00 最前面的两位被取消掉 后面的两位补零 0000 0000 0010 0000 得到32 1 1 0000 0000 0000 0001 0000 0000 0000 0010 2 2 2 0000 0000 0000 0010 0000 0000 0000 1000 4 -3 3 1000 0000 0000 0011 1111 1111 1111 1100 1111 1111 1111 1101 1111 1111 1110 1000 1000 000

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档