/* C语言 按位异或实现加法 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h> void test1()
{
int a = ;
int b = ;
int cand = ;
int cxor = ;
int c = ; //实现c=a+b //1.不考虑进位,按位计算各位累加(用异或实现),得到值xor;
cxor = a^b;
/*
实现说明:
a的值是2,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0010
b的值是3,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0011
a^b即
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001 --->异或结果
*/ //2.考虑进位,进行位与运算之后,结果左移1位
cand = a&b;
/*
实现说明:
a的值是2,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0010
b的值是3,对应计算机中补码是 0000 0000 0000 0000 0000 0000 0000 0011
a^b即
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0010 --->与结果
0000 0000 0000 0000 0000 0000 0000 0100 --->与结果左移1位,即cand的值
*/ //3.进行求和计算
c = cxor + (cand << ); /*
实现说明:
0000 0000 0000 0000 0000 0000 0000 0001 --->异或结果
0000 0000 0000 0000 0000 0000 0000 0100 --->与结果左移1位,即cand的值
0000 0000 0000 0000 0000 0000 0000 0101 --->最终结果是5
*/ printf("--test1--c[%d]--\n", c);
} void test2()
{
int a = -;
int b = ;
int cand = ;
int cxor = ;
int c = ; //实现c=a+b //1.不考虑进位,按位计算各位累加(用异或实现),得到值xor;
cxor = a^b;
/*
实现说明:
a的值是2,对应计算机中补码是 1 111 1111 1111 1111 1111 1111 1111 1110
b的值是3,对应计算机中补码是 0 000 0000 0000 0000 0000 0000 0000 0011
a^b即
1 111 1111 1111 1111 1111 1111 1111 1110
0 000 0000 0000 0000 0000 0000 0000 0011
1 111 1111 1111 1111 1111 1111 1111 1101 --->异或结果
*/ //1.考虑进位,进行位与运算之后,结果左移1位
cand = a&b;
/*
实现说明:
a的值是2,对应计算机中补码是 1 111 1111 1111 1111 1111 1111 1111 1110
b的值是3,对应计算机中补码是 0 000 0000 0000 0000 0000 0000 0000 0011
a^b即
1 111 1111 1111 1111 1111 1111 1111 1110
0 000 0000 0000 0000 0000 0000 0000 0011
0 000 0000 0000 0000 0000 0000 0000 0010 --->与结果
0 000 0000 0000 0000 0000 0000 0000 0100 --->与结果左移1位,即cand的值
*/ //3.进行求和计算
c = cxor + (cand << ); /*
实现说明:
1 111 1111 1111 1111 1111 1111 1111 1101 --->异或结果
0 000 0000 0000 0000 0000 0000 0000 0100 --->cand的值
0 000 0000 0000 0000 0000 0000 0000 0001 --->最终结果是1
*/ printf("--test2--c[%d]--\n", c);
} int main()
{
test1();
test2();
printf("--------ok-------\n");
getchar();
return ;
}

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. c#: WebBrowser控件注入js代码的三种方案

    聊做备忘. 假设js代码为: string jsCode = @"function showAlert(s) {{ alert('hello, world! ' + s);}}; showA ...

  2. zabbix--远程执行命令

    zabbix 远程执行命令 重启应用 服务器 使用远程执行命令可以在某些时候帮我做一些事情,达到轻量级的自动化,比如当 nginx.mysql.php.redis.tomcat.等等应用挂掉时帮我们自 ...

  3. js事件3-事件对象

    对于每次点击一个事件,都会产生一个事件对象,这个事件对象中包含了这个事件的很多信息 我们来看看事件对象具体有哪些信息 Object.onclick=function(e){ ..... }其中的参数e ...

  4. 项目Beta冲刺(7/7)(追光的人)(2019.5.29)

    所属课程 软件工程1916 作业要求 Beta冲刺博客汇总 团队名称 追光的人 作业目标 描述Beta冲刺每日的scrum和PM报告两部分 队员学号 队员博客 221600219 小墨 https:/ ...

  5. JSR303/JSR-349,hibernate validation,spring validation 之间的关系

    JSR303是一项标准,JSR-349是其的升级版本,添加了一些新特性,他们规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,他们位于javax.validation.co ...

  6. Photon介绍与安装

    Photon光子引擎是一款实时的Socket服务器和开发框架,快速.使用方便.容易扩展. 服务端架构在windows系统平台上,采用C#语言编写. 客户端SDK提供了多种平台的开发API,包括DotN ...

  7. wordpress自定义菜单间添加分隔符

    我们知道wordpress自定义菜单每个item是用<li></li>来固定的,那如果想在</li>加分隔符要如何操作呢?如下图所示.我们可以用PHP的str_re ...

  8. Hive元数据配置到MySql

    1 驱动拷贝 1.在/opt/software/mysql-libs目录下解压mysql-connector-java-5.1.27.tar.gz驱动包 [root@hadoop102 mysql-l ...

  9. Ribbon自带负载均衡策略

    IRule这是所有负载均衡策略的父接口,里边的核心方法就是choose方法,用来选择一个服务实例. AbstractLoadBalancerRuleAbstractLoadBalancerRule是一 ...

  10. 使用openrc 管理容器中的服务

    对于后台任务一般是不建议在容器中运行的,但是如果我们为了简化应用的部署,可能会使用后台任务进行服务的管理,类似的 工具很多,supervisor,systemd , init.d 同时对于docker ...