1. /* C语言 按位异或实现加法 */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. void test1()
  8. {
  9. int a = ;
  10. int b = ;
  11. int cand = ;
  12. int cxor = ;
  13. int c = ;
  14.  
  15. //实现c=a+b
  16.  
  17. //1.不考虑进位,按位计算各位累加(用异或实现),得到值xor;
  18. cxor = a^b;
  19. /*
  20. 实现说明:
  21. a的值是2,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0010
  22. b的值是3,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0011
  23. a^b即
  24. 0000 0000 0000 0000 0000 0000 0000 0010
  25. 0000 0000 0000 0000 0000 0000 0000 0011
  26. 0000 0000 0000 0000 0000 0000 0000 0001 --->异或结果
  27. */
  28.  
  29. //2.考虑进位,进行位与运算之后,结果左移1位
  30. cand = a&b;
  31. /*
  32. 实现说明:
  33. a的值是2,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0010
  34. b的值是3,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0011
  35. a^b即
  36. 0000 0000 0000 0000 0000 0000 0000 0010
  37. 0000 0000 0000 0000 0000 0000 0000 0011
  38. 0000 0000 0000 0000 0000 0000 0000 0010 --->与结果
  39. 0000 0000 0000 0000 0000 0000 0000 0100 --->与结果左移1位,即cand的值
  40. */
  41.  
  42. //3.进行求和计算
  43. c = cxor + (cand << );
  44.  
  45. /*
  46. 实现说明:
  47. 0000 0000 0000 0000 0000 0000 0000 0001 --->异或结果
  48. 0000 0000 0000 0000 0000 0000 0000 0100 --->与结果左移1位,即cand的值
  49. 0000 0000 0000 0000 0000 0000 0000 0101 --->最终结果是5
  50. */
  51.  
  52. printf("--test1--c[%d]--\n", c);
  53. }
  54.  
  55. void test2()
  56. {
  57. int a = -;
  58. int b = ;
  59. int cand = ;
  60. int cxor = ;
  61. int c = ;
  62.  
  63. //实现c=a+b
  64.  
  65. //1.不考虑进位,按位计算各位累加(用异或实现),得到值xor;
  66. cxor = a^b;
  67. /*
  68. 实现说明:
  69. a的值是2,对应计算机中补码是 1 111 1111 1111 1111 1111 1111 1111 1110
  70. b的值是3,对应计算机中补码是 0 000 0000 0000 0000 0000 0000 0000 0011
  71. a^b即
  72. 1 111 1111 1111 1111 1111 1111 1111 1110
  73. 0 000 0000 0000 0000 0000 0000 0000 0011
  74. 1 111 1111 1111 1111 1111 1111 1111 1101 --->异或结果
  75. */
  76.  
  77. //1.考虑进位,进行位与运算之后,结果左移1位
  78. cand = a&b;
  79. /*
  80. 实现说明:
  81. a的值是2,对应计算机中补码是 1 111 1111 1111 1111 1111 1111 1111 1110
  82. b的值是3,对应计算机中补码是 0 000 0000 0000 0000 0000 0000 0000 0011
  83. a^b即
  84. 1 111 1111 1111 1111 1111 1111 1111 1110
  85. 0 000 0000 0000 0000 0000 0000 0000 0011
  86. 0 000 0000 0000 0000 0000 0000 0000 0010 --->与结果
  87. 0 000 0000 0000 0000 0000 0000 0000 0100 --->与结果左移1位,即cand的值
  88. */
  89.  
  90. //3.进行求和计算
  91. c = cxor + (cand << );
  92.  
  93. /*
  94. 实现说明:
  95. 1 111 1111 1111 1111 1111 1111 1111 1101 --->异或结果
  96. 0 000 0000 0000 0000 0000 0000 0000 0100 --->cand的值
  97. 0 000 0000 0000 0000 0000 0000 0000 0001 --->最终结果是1
  98. */
  99.  
  100. printf("--test2--c[%d]--\n", c);
  101. }
  102.  
  103. int main()
  104. {
  105. test1();
  106. test2();
  107. printf("--------ok-------\n");
  108. getchar();
  109. return ;
  110. }

C语言 按位异或实现加法的更多相关文章

  1. day03<Java语言基础+>

    Java语言基础(逻辑运算符的基本用法) Java语言基础(逻辑运算符&&和&的区别) Java语言基础(位运算符的基本用法1) Java语言基础(位异或运算符的特点及面试题) ...

  2. 03 java语言基础逻辑运算符

    03.01_Java语言基础(逻辑运算符的基本用法) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连 ...

  3. LIKE 运算符

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+".在vb2005中运算符大致可以分为5种类型:算术运算符.连接运算 ...

  4. JavaEE基础(三)

    1.Java语言基础(逻辑运算符的基本用法) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连接boo ...

  5. 【Java基础】【03运算符&if语句】

    03.01_Java语言基础(逻辑运算符的基本用法)(掌握) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一 ...

  6. 黑马程序员_Java基础视频-深入浅出精华版--视频列表

    \day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...

  7. 课程2:《黑马程序员_Java基础视频-深入浅出精华版》-视频列表-

    \day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...

  8. javascript的那些事儿你都懂了吗

    javascript从开始的验证表单的脚本语言发展到现在能运行在服务器上,其影响力不断的提升.自己作为一个做前端的,编写js是必不可少,从自己学习js的历程来看其实也是比较吃力.要 学好它,还是的花费 ...

  9. 3rd 逻辑运算符的基本用法

    03.01_Java语言基础(逻辑运算符的基本用法)(掌握) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一 ...

随机推荐

  1. 阿里云ESC-安装nginx

    废话不多说,直接上干货,本人使用putty连接到阿里云ECS 平台(centos7),先输入如下命令: sudo rpm -Uvh http://nginx.org/packages/centos/7 ...

  2. Python 去除文件中的空行

    def clear_space(): with open("test","r",encoding="utf-8") as fr: for l ...

  3. saltstack--状态判断unless与onlyif

    saltstack状态判断unless与onlyif 很多时候我们在编写 state 文件时候需要进行判断,判断该目录或文件是否存在,判断该配置是否已经已添加,然后根据判断结果再决定命令或动作是否执行 ...

  4. SpringCloud2.0 Eureka Server 服务中心 基础教程(二)

    1.创建[服务中心],即 Eureka Server 1.1.新建 Spring Boot 工程,工程名称: springcloud-eureka-server 1.2.工程 pom.xml 文件添加 ...

  5. Broadcast,Scatter,Gather,Reduce,All-reduce分别是什么?

    Broadcast 看名字就很好理解了,其实就是把同一份数据分发广播给所有人,示意图如下: Scatter 不同于Broadcast, scatter可以将不同数据分发给不同的进程. Gather 这 ...

  6. Educational Codeforces Round 67 D. Subarray Sorting

    Educational Codeforces Round 67 D. Subarray Sorting 传送门 题意: 给出两个数组\(a,b\),现在可以对\(a\)数组进行任意次排序,问最后能否得 ...

  7. 201671010436 王雪刚 实验十四 团队项目评审&课程学习总结

    一:实验名称:团队项目评审&课程学习总结 二:实验目的与要求 (1)掌握软件项目评审会流程: (2)反思总结课程学习内容. 三:实验步骤 任务一:按照团队项目结对评审名单,由项目组扮演乙方,结 ...

  8. 织梦DedeCms网站内部SEO详细分析

    一.确定网站的目标关键词 最为重要的一方面,一般网站首页的目标关键词建议在1-3个.对于目标关键词的选取有几个建议 1.定位:网站的内容和业务相关 2.分析:对用户体验及竞争对手的网站进行分析 3.筛 ...

  9. A*G/C011

    A*G/C011 A Airport Bus 不会zbl/kk B Colorful Creatures 枚举每个开始的点直接倍增 我好像sb了,可行的是一段前缀所以可以直接2分 C Squared ...

  10. PKUSC2019滚粗记

    PKUSC2019滚粗记 Day -INF 在\(\text{APIO}\)时得知省选考崩的自己居然能参加\(\text{SC}\),真是非常意外啊. Day 0 上午机房充斥着放假的气息,居然还成功 ...