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:逻辑运算符一 ...
随机推荐
- 阿里云ESC-安装nginx
废话不多说,直接上干货,本人使用putty连接到阿里云ECS 平台(centos7),先输入如下命令: sudo rpm -Uvh http://nginx.org/packages/centos/7 ...
- Python 去除文件中的空行
def clear_space(): with open("test","r",encoding="utf-8") as fr: for l ...
- saltstack--状态判断unless与onlyif
saltstack状态判断unless与onlyif 很多时候我们在编写 state 文件时候需要进行判断,判断该目录或文件是否存在,判断该配置是否已经已添加,然后根据判断结果再决定命令或动作是否执行 ...
- SpringCloud2.0 Eureka Server 服务中心 基础教程(二)
1.创建[服务中心],即 Eureka Server 1.1.新建 Spring Boot 工程,工程名称: springcloud-eureka-server 1.2.工程 pom.xml 文件添加 ...
- Broadcast,Scatter,Gather,Reduce,All-reduce分别是什么?
Broadcast 看名字就很好理解了,其实就是把同一份数据分发广播给所有人,示意图如下: Scatter 不同于Broadcast, scatter可以将不同数据分发给不同的进程. Gather 这 ...
- Educational Codeforces Round 67 D. Subarray Sorting
Educational Codeforces Round 67 D. Subarray Sorting 传送门 题意: 给出两个数组\(a,b\),现在可以对\(a\)数组进行任意次排序,问最后能否得 ...
- 201671010436 王雪刚 实验十四 团队项目评审&课程学习总结
一:实验名称:团队项目评审&课程学习总结 二:实验目的与要求 (1)掌握软件项目评审会流程: (2)反思总结课程学习内容. 三:实验步骤 任务一:按照团队项目结对评审名单,由项目组扮演乙方,结 ...
- 织梦DedeCms网站内部SEO详细分析
一.确定网站的目标关键词 最为重要的一方面,一般网站首页的目标关键词建议在1-3个.对于目标关键词的选取有几个建议 1.定位:网站的内容和业务相关 2.分析:对用户体验及竞争对手的网站进行分析 3.筛 ...
- A*G/C011
A*G/C011 A Airport Bus 不会zbl/kk B Colorful Creatures 枚举每个开始的点直接倍增 我好像sb了,可行的是一段前缀所以可以直接2分 C Squared ...
- PKUSC2019滚粗记
PKUSC2019滚粗记 Day -INF 在\(\text{APIO}\)时得知省选考崩的自己居然能参加\(\text{SC}\),真是非常意外啊. Day 0 上午机房充斥着放假的气息,居然还成功 ...