C语言 按位异或实现加法
/* 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语言 按位异或实现加法的更多相关文章
- day03<Java语言基础+>
Java语言基础(逻辑运算符的基本用法) Java语言基础(逻辑运算符&&和&的区别) Java语言基础(位运算符的基本用法1) Java语言基础(位异或运算符的特点及面试题) ...
- 03 java语言基础逻辑运算符
03.01_Java语言基础(逻辑运算符的基本用法) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连 ...
- LIKE 运算符
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+".在vb2005中运算符大致可以分为5种类型:算术运算符.连接运算 ...
- JavaEE基础(三)
1.Java语言基础(逻辑运算符的基本用法) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连接boo ...
- 【Java基础】【03运算符&if语句】
03.01_Java语言基础(逻辑运算符的基本用法)(掌握) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一 ...
- 黑马程序员_Java基础视频-深入浅出精华版--视频列表
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
- 课程2:《黑马程序员_Java基础视频-深入浅出精华版》-视频列表-
\day01\avi\01.01_计算机基础(计算机概述).avi; \day01\avi\01.02_计算机基础(计算机硬件和软件概述).avi; \day01\avi\01.03_计算机基础(软件 ...
- javascript的那些事儿你都懂了吗
javascript从开始的验证表单的脚本语言发展到现在能运行在服务器上,其影响力不断的提升.自己作为一个做前端的,编写js是必不可少,从自己学习js的历程来看其实也是比较吃力.要 学好它,还是的花费 ...
- 3rd 逻辑运算符的基本用法
03.01_Java语言基础(逻辑运算符的基本用法)(掌握) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一 ...
随机推荐
- 《linux就该这么学》课堂笔记06 编写shell脚本、if、for
1.1.脚本的两种方式 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令. 1. ...
- expect免交互用法
一.ssh免交互远程连接linux服务器 ssh在远程连接linux系统时,会有交互,比如输入yes/no,或者需要输入密码.我们怎么避免这些交互呢!比如我们可以用telnet远程登录交换机,去备份交 ...
- CentOS7 编译安装MySQL5.6.38(一)
一.下载MySQL5.6.38安装包 下载地址:https://www.mysql.com/downloads/ 打开网站之后选择Archives 然后再选择开源版本 选择我们要下载的版本: htt ...
- 看TED演讲——Why you will fail to have a great career
讲者的名字叫Larry Smith,看起来很严肃很认真,有点黑色幽默的意思,演讲风格是非常让人喜欢的. 拿来howie老师的说法,拉老师给的你为什么没有一个great career的原因: 1. 知道 ...
- Detectron2源码阅读笔记-(一)Config&Trainer
代码结构概览 核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可视化的代 ...
- Linux学习22-文件上传与下载(rz,sz)
前言 远程访问linux服务器的时候,我们本地电脑需要和linux服务器上有文件上传和下载的操作,如果安装过xshell和xftp工具,可以使用xftp上传文件和下载文件的操作. 如果不用xftp工具 ...
- placeholder 效果的实现,input提示字,获取焦点时消失
<!doctype html><html><head><meta charset="utf-8"><title>plac ...
- c+多态的本质:编译器维护了类型信息同时插入了解释执行机制
Calling a virtual function is slower than calling a non-virtual function for a couple of reasons: Fi ...
- java 8 学习三(Stream API)
集合讲的是数据,流讲的是计算. 流的数据处理功能支持类似于数据库的操作,以及函数式编程语言中的常用操作,如filter. map. reduce. find. match. sort等. 流操作可以顺 ...
- php面试题收藏
总结几个要素: 1.个人简介名字大写,内容需要详实,一是可以给人留下映像,二是减少不必要的与面试官交换个人信息的时间.准备一份好的口头自我介绍是很有必要的,毕竟准备一次能用很久,时间花在上面很实用,面 ...