/* 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. 《linux就该这么学》课堂笔记06 编写shell脚本、if、for

    1.1.脚本的两种方式 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令. 1. ...

  2. expect免交互用法

    一.ssh免交互远程连接linux服务器 ssh在远程连接linux系统时,会有交互,比如输入yes/no,或者需要输入密码.我们怎么避免这些交互呢!比如我们可以用telnet远程登录交换机,去备份交 ...

  3. CentOS7 编译安装MySQL5.6.38(一)

    一.下载MySQL5.6.38安装包 下载地址:https://www.mysql.com/downloads/  打开网站之后选择Archives 然后再选择开源版本 选择我们要下载的版本: htt ...

  4. 看TED演讲——Why you will fail to have a great career

    讲者的名字叫Larry Smith,看起来很严肃很认真,有点黑色幽默的意思,演讲风格是非常让人喜欢的. 拿来howie老师的说法,拉老师给的你为什么没有一个great career的原因: 1. 知道 ...

  5. Detectron2源码阅读笔记-(一)Config&Trainer

    代码结构概览 核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可视化的代 ...

  6. Linux学习22-文件上传与下载(rz,sz)

    前言 远程访问linux服务器的时候,我们本地电脑需要和linux服务器上有文件上传和下载的操作,如果安装过xshell和xftp工具,可以使用xftp上传文件和下载文件的操作. 如果不用xftp工具 ...

  7. placeholder 效果的实现,input提示字,获取焦点时消失

    <!doctype html><html><head><meta charset="utf-8"><title>plac ...

  8. c+多态的本质:编译器维护了类型信息同时插入了解释执行机制

    Calling a virtual function is slower than calling a non-virtual function for a couple of reasons: Fi ...

  9. java 8 学习三(Stream API)

    集合讲的是数据,流讲的是计算. 流的数据处理功能支持类似于数据库的操作,以及函数式编程语言中的常用操作,如filter. map. reduce. find. match. sort等. 流操作可以顺 ...

  10. php面试题收藏

    总结几个要素: 1.个人简介名字大写,内容需要详实,一是可以给人留下映像,二是减少不必要的与面试官交换个人信息的时间.准备一份好的口头自我介绍是很有必要的,毕竟准备一次能用很久,时间花在上面很实用,面 ...