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:逻辑运算符一 ...
随机推荐
- ad批量上传
import pandas as pd import requests import arrow from collections import deque import json campaign_ ...
- Web服务基础介绍
Web服务基础介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.正常情况下的单次web服务访问流程 博主推荐阅读: https://www.cnblogs.com/yinzh ...
- JavaFX 井字棋游戏
利用JavaFX设计一个井字棋游戏,其中包括了能够与玩家对战的AI.AI的实现相比五子棋来说要简单得多,可以保证AI在后手情况下绝对不会输,具体实现如下: /* * To change this li ...
- python的sort和sorted
sort 只适用于列表,返回列表类型. sorted 可适用于字典,元组和列表. 使用方法 sort的使用方法是list.sort(cmp=None, key=None, reverse=False) ...
- Jmeter中while循环逻辑控制器+配置元件计数器的用法
一.在线程组下添加逻辑控制器While Controller 二.在逻辑控制器While Controller下添加Sample,BeanShell Sampler , 三.逻辑控制器While Co ...
- 《快活帮》第九次团队作业:Beta冲刺与验收准备
项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:BETA冲刺与团队项目验收 团队名称 快活帮 作业学习目标 (1)掌 ...
- “为了交项目干杯”对“那周余嘉熊掌将得队”、“男上加男,强人所男”的Beta产品测试报告
"为了交项目干杯"对"那周余嘉熊掌将得队"."男上加男,强人所男"的Beta产品测试报告 格式描述 课程名称:软件工程1916|W(福州大学 ...
- windows命令查看端口占用情况
打开cmd 查看端口占用情况:netstat -aon 查看PID对应的进程:tasklist /FI "PID eq 16948"
- mysql 执行存储过程报错Prepared statement needs to be re-prepared
今日思语:不喜欢再见 说再见,因为有时明知道下一次再见已是遥遥无期或是不再见 错误如下: ERROR 1615 (HY000) at line 406 in file: 'update-mysql.s ...
- 【每天学一点Linux】centos7 docker 启动cpu100% 飙升居高不下 无法关机 无法杀死进程
目前不知道什么原因. 重装了docker后仍然不行.安装方式为yum(在线和本地方式). 后来使用了下载static压缩包的方式来使用,就没有再出现如题的问题了.安装包地址为:https://down ...