数据结构与算法——1127—异或^&&

1、不使用+-*/,实现加法

题目

5和7相加

解答

|-----------|---|---|---|---|
| 5的二进制 | 0 | 1 | 0 | 1 |
| 7的二进制 | 0 | 1 | 1 | 1 |
| 5和7异或 | 0 | 0 | 1 | 0 |
| 5和7位与 | 0 | 1 | 0 | 1 |
| 位与结果向左进1位 | 1 | 0 | 1 | 0 |

异或的结果和向左进位后的结果继续进行异或和位与左移的操作

操作步骤:

1、异或

2、位与操作

此时进行检测,如果位与的操作是0,异或的结果就是最后的结果

如果位与的操作不是0,继续操作

3、左移1位

4、更新计算对象

代码

复制代码
#include<iostream>
using namespace std;

int sum(int num1,int num2)
{
	int res1 ;
	int res2 ;
	while (1)
	{
		res1 = num1 ^ num2;
		res2 = num1 & num2;
		if (res2==0)
		{
			break;
		}
		res2 <<= 1;
		num1 = res1;
		num2 = res2;
	}
	return res1;
}

int main()
{
	int a = 5;
	int b = 7;

	cout << sum(a, b);
}

2、异或运算的使用场景

1、一般使用在==判断两个数字是否相等的情况下,将两个数字异或,判断是否为0

2、清零时使用,自己异或自己

3、两个数字相互交换

假设a=5,b=9,交换a、b的值。

a=a^b; //a=a与b亦或的值

b=a^b; //b=a与b亦或的值再亦或b,则两个b抵消,只剩a的值,则b就附上了a的值

a=a^b; //a=a与b亦或的值再亦或a,则两个a抵消,只剩b的值,则a就附上了b的值

相关推荐
菜鸟~noob2339 分钟前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean210318 分钟前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客33 分钟前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
stolentime39 分钟前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法
tdtsmt2 小时前
穿戴硬件量产工艺实录:天地通电子智能手表主板 SMT 贴片案
c++
和裕2 小时前
蜂窝板 vs 七层瓦楞重型纸箱:大件工业设备运输性能与成本全对比
大数据·运维·网络·人工智能·算法
衡石科技2 小时前
Data_Agent记忆机制与经验复用衡石分析智能体会话记忆与长期学习技术解析
人工智能·科技·学习·算法·企业级bi
新时代牛马2 小时前
cyclictest 毛刺从哪来?从ftrace、latencytop、perf到IRQ/调度延迟定位
android·开发语言·python·kotlin
三8442 小时前
Java 模板注入(FreeMarker) · 02 · 模板引擎与 FreeMarker 语法
java·开发语言·web安全·freemarker
IvanCodes3 小时前
Python 基础语法(七):推导式与常见遍历写法
开发语言·python