当前位置: 首页 > news >正文

E23.【C语言】练习:不创建第三个变量实现两个整数的交换

目录

题目条件

思路1(+ -)

思路2 (^)(XOR)

往期推荐

1.题目条件

禁止使用以上代码

2.思路1:+ -运算

a=a+b;
b=a-b;
a=a-b;

但这样有潜在的问题 :a,b存储的数字过大,a+b可能超过范围

 因此改用思路2

3.思路2:^运算(XOR)

复习异或运算:

异或运算==半加运算==不进位运算

0 XOR 0 == 0;0 XOR 1 == 1 XOR 0== 1; 1 XOR 1== 0 (1+1==10不进位,是0)

因此引出一系列定律:


归零定律:a XOR a == 0

恒等定律:a XOR 0 == a

交换定律:a XOR b == b XOR a

*(下面会用到)自反定律:a XOR b XOR a == b

*(下面会用到)结合定律:a XOR b XOR c == a XOR (b XOR c) == (a XOR b) XOR c


可以想到:

a=a^b;
b=a^b;
a=a^b;

解释:a=a XOR b; -->b=(a XOR b) XOR b == a XOR (b XOR b) == a XOR 0 == a 结合定律

-->a=a XOR b == (a XOR b) XOR a == a XOR b XOR a == b 自反定律

4.除此之外...

可以用汇编(这里以8086为例)利用栈交换数据

ax视作变量a,bx视作变量b

mov ax,1000

mov ss,ax

mov sp,0010   ;初始化栈顶

mov ax,001A

mov bx,001B

push ax

push bx

pop ax

pop bx

4.往期推荐

14.【C语言】初识操作符 上

15.【C语言】初识操作符 下



 

 

相关文章:

E23.【C语言】练习:不创建第三个变量实现两个整数的交换

目录 题目条件 思路1( -) 思路2 (^)(XOR) 往期推荐 1.题目条件 禁止使用以上代码 2.思路1: -运算 aab; ba-b; aa-b; 但这样有潜在的问题 :a,b存储的数字过大,ab可能超过范围 因此改用思路2…...

如何搭建一个web系统?

需求 搭建一个web系统。 框架 设计:墨刀 前端:Vue.js 后端:Java 算法:Python 数据库:时序数据库,介绍 部署:Jekins https://www.jenkins.io/ 文档管理:Teambition 项目管理:禅道 代码管理:Gitlab 开发流程 设计文档和原型文档,功能接口设计&#xff0…...

三十种未授权访问漏洞复现 合集( 二 )

未授权访问漏洞介绍 未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。---->目录遍历 目前主要存在未授权访问漏洞的有:NFS服务&a…...

C语言学习笔记[29]:函数①

函数 在C语言中,函数是一段可以完成特定功能的代码,它们可以被重复调用。 函数的分类: 库函数自定义函数 库函数 在C语言中,库函数是由系统提供的,用于完成特定功能的函数,这些函数被集合在一起&#…...

使用Springboot + netty 打造聊天服务之Nacos集群问题记录

目录 1、前言1.1、方法一1.2、方法二 2、方案二实战2.1、在netty服务里加上ws连接、中断事件2.2、在netty服务里加上消息服务 4、总结 使用Springboot netty 打造聊天服务系列文章 第一章 初始搭建工程 第二章 Nacos集群问题记录 1、前言 在使用Springboot Nacos Netty(Web…...

全网唯一!R语言顶刊配色包TheBestColors

与Matlab相比,R语言在绘图方面有着天然的优势。 比如在配色方面,R语言有各式各样现成的包,按理说配色这种事应该很方便才对。 但实际体验下来,发现似乎不是那么回事。 首先,你很难记住每个包的调用方法以及每种配色…...

链表题型思路错误总结

常见题目 206. 反转链表 关键点:定义前置指针。 在给cur.next复制前,需要定义好next节点防止断链。 public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode pre null;ListNode cur head;while(cur…...

算法学习day28

一、寻找右区间(二分法) 题意:题目很容易理解 但是转换为二分法有点晦涩 给你一个区间数组 intervals ,其中 intervals[i] [starti, endi] ,且每个 starti 都 不同 。区间 i 的 右侧区间 可以记作区间 j ,并满足 startj > e…...

C语言基础题:迷宫寻路(C语言版)

1.题目描述 机器猫被困在一个矩形迷宫里。 迷宫可以视为一个n x m 矩阵,每个位置要么是空地,要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。 机器猫初始时位于(1,1)的位置,问能否走到(n,m)位置。 2.输入格式 第一行&#xff0…...

力扣-1两数之和2两数相加-2024/8/3

1、两数之和 解法一 暴力法(2个for循环) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for ii in range(len(nums)):for jj in range(ii1, len(nums)):if nums[ii]nums[jj] target:return [ii,jj]解法二 哈希表法…...

简站WordPress主题 专业的WordPress建站服务商

简站WordPress主题是一款备受推崇的WordPress主题,以其简洁、实用、无插件和更安全的特性脱颖而出。以下是关于简站WordPress主题的一些详细分析: 简站WordPress主题采用了扁平化设计风格,界面简洁明了,这使得网站看起来更加专业…...

Final Shell for Mac 虚拟机连接工具【简单易操作,轻松上手】【开发所需连接工具】

Mac分享吧 文章目录 效果一、下载软件二、安装软件三、运行测试安装完成!!! 效果 一、下载软件 下载软件 链接:http://www.macfxb.cn 二、安装软件 三、运行测试 安装完成!!!...

Oracle JDK:版本、支持与许可

文章目录 版本支持许可BCLOTNNFTCFAQ其他OpenJDK和其他的JDK实现JDK、JRE、JVMJava SE、Java EE、Java ME版本 Oracle JDK的最新版本和历史版本的官方下载地址(可查询版本发行说明等信息):https://www.oracle.com/cn/java/technologies/downloads/ 常规版本(非LTS):每隔…...

大模型学习笔记 - LLM 之RLHF人类对齐的简单总结

LLM - RLHF人类对齐的简单总结 LLM-人类对齐 1. RLHF(Reinforcement Learning from Human Feedback, RLHF),基于人类反馈的强化学习2 奖励模型训练3 强化学习训练 3.1 PPO介绍3.2 进阶的RLHF的介绍 3.2.1. 过程监督奖励模型3.2.2. 基于AI反馈的强化学习3.2.3. 非强化学习的对齐…...

【从零开始一步步学习VSOA开发】 概述

概述 概念 VSOA(Vehicle SOA)是翼辉为了解决任务关键型系统不能适用当前微服务通信架构问题而设计的⼀个轻量级适用于任务关键领域的微服务通信架构,以方便开发者构建大型分布式松耦合软件系统,且支持并行开发。 特点 其主要特…...

小程序背景图片无法通过 WXSS 获取

问题:pages/index/index.wxss 中的本地资源图片无法通过 WXSS 获取 可以使用网络图片,或者 base64,或者使用标签。 将图片转换为base64,地址 base64图片在线转换工具 - 站长工具 在这里把要使用的图片转换一把,然后将得…...

CC++内存魔术:掌控无形资源

hello,uu们,今天呢我们来详细讲解C&C的内存管理,好啦,废话不多讲,开干 1:C/C内存分布 2:C语言中动态内存管理方式:malloc/calloc/realloc/free 3:C内存管理方式 3.1:new/delete操作内置类型 3.1.1:代码1 3.1.2:代码2 3.2:new和delete操作自定义类型 3.2.1:C语言创建…...

算法--初阶

1、tips 1.1、set求交集 {1,2,3} & {2,3} & {1,2} {2} 其实就是位运算, 只有set可以这样使用, list没有这种用法 {1,2,3} | {2,3, 4} | {1,2} {1, 2, 3, 4} 并集 1.2、*与** * 序列(列表、元组)解包,如果是字典,那…...

通过Java实现插入排序(直接插入,希尔)与选择排序(直接选择,堆排)

目录 (一)插入排序 1.直接插入排序 (1)核心思想: (2)代码实现(以从小到大排序为例): (3)代码分析: 2.希尔排序&#xff08…...

大型分布式B2B2C多用户商城7.0企业版源码分享【java语言、方便二次开发】

项目介绍 项目基于SpringBoot开发,运营端和商户端采用ElementVue,买家使用采用VueIviewnuxt服务端渲染。使用到的中间件有Redis、RabbitMQ、ElasticSearch、FastDFS、Mongodb等。主要功能包括有运营管理、商品管理、订单管理、售后管理、会员管理、财务…...

C++的结构体、联合体、枚举类型(一)

1.C++的结构体 2.C++的联合体 3.C++的枚举类型 1.C++的结构体 (1)C++中定义结构体变量,可以省略struct关键字 struct XX{…}; XX x;//定义结构体变量直接省略struct(2)C++结构体中可以直接定义函数,谓之成员函数(又叫方法)(3)在成员函数中可以直接访问该结构体的成员变…...

搭建高可用OpenStack(Queen版)集群(一)之架构环境准备

一、搭建高可用OpenStack(Queen版)集群之架构环境准备 一、架构设计 二、初始化基础环境 1、管理节点创建密钥对(方便传输数据) 所有控制节点操作 # ssh-keygen #一路回车即可 Generating public/private rsa key pair. Enter f…...

通过Stack Overflow线程栈溢出的问题实例,详解C++程序线程栈溢出的诸多细节

目录 1、问题说明 2、从Visual Studio输出窗口中找到了线索,发生了Stack Overflow线程栈溢出的异常 3、发生Stack Overflow线程栈溢出的原因分析 4、线程占用的栈空间大小说明 5、引发线程栈溢出的常见原因和场景总结 6、在问题函数入口处添加return语句&…...

LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 这是一道银行的面试题,就是简单?! LeetCode链接:3. 无重复字符的最长子串 1.题目描述 给定一个字符串 s &#xff0c…...

验证cuda和pytorch都按照成功了

要验证您的PyTorch是否能够调用CUDA,您可以执行以下步骤: 1. **检查CUDA是否可用**: 在Python中运行以下代码来检查CUDA是否可用: python import torch print(torch.cuda.is_available()) 如果输出为 True&…...

iOS开发如何自己捕获Crash

为了在iOS中捕获和处理未捕获的Objective-C异常和系统信号引起的崩溃,可以使用NSSetUncaughtExceptionHandler和标准的Unix信号处理机制来实现。这能帮助你记录绝大部分的崩溃信息。以下是详细的实现步骤和代码示例: 一、系统崩溃处理 通过NSSetUncaug…...

雪花算法(Snowflake Algorithm)

雪花算法(Snowflake Algorithm)是一种分布式唯一ID生成算法,主要用于生成全球唯一的ID,广泛应用于分布式系统中,例如在数据库中作为主键。这个算法最初由Twitter提出,并且被广泛使用在很多大规模系统中。有…...

〖任务1〗ROS2 jazzy Linux Mint 22 安装教程

前言: 本教程在Linux系统上使用。 目录 一、linux安装二、linux VPN安装三、linux anaconda安装(可选)四、linux ROS2 安装五、rosdep init/update 解决方法六、安装GUI 一、linux安装 移动硬盘安装linux:[LinuxToGo教程]把ubunt…...

图像增强:使用周围像素填充掩码区域

制作图像需要填充的掩码区域,对需要填充的位置的mask赋值非0,不需要填充赋值为0使用cv2.inpaint对图像掩码mask中非0元素位置的图像像素进行修复。从而实现使用周围像素填充掩码区域cv2.inpaint 是 OpenCV 库中的一个函数,用于图像修复(inpainting),即填充图像中的损坏区…...

给虚拟机Ubuntu扩展硬盘且不丢数据

1.Ubuntu关机状态下先扩展,如扩展20GB 2.进入ubuntu,切换root登录,必须是root全选,否则启动不了分区工具gparted 将新的20GB创建好后,选择ext4,primary; 3.永久挂载 我的主目录在/并挂载到/dev/sda1 从图…...

长春火车站电话/跨国网站浏览器

wget --mirror -p --convert-links -P [本地目錄] [網站地址] 參數講解: --mirror:設置這個參數用來建立本地鏡像 -p:下載所有HTML適合顯示的元素 --convert-links:將所有鏈接轉為本地鏈接 -P [本地目錄]:儲存文件到本…...

怎样用手机做网站/网络推广营销方案免费

装配步骤: help——Eclipse Marketplace 下载完成,重启eclipse window——prefrences——指定class文件的默认打开方式 指定没有源代码的class文件的默认打开方式 测试是否成功: 打开.class文件测试是否成功! 自助安装方式请参考…...

施工企业合规风险识别与管理/网站搜索引擎优化方案的案例

原文来自于:http://courages.us/archives/176 网站上需要提供一些打印数据给用户下载,这些文件每次都需要重新生成,因为随时都会有新的数据产生。网络上关于PHP的压缩功能实现有多种方式,比如PclZip,ZipArchive等。PclZip是使用PHP写的一个压…...

网站怎么设计好看的图片/燕郊今日头条

方式一&#xff1a;在浮动元素的父级&#xff0c;添加overflow&#xff1a;hidden 方式二&#xff1a;在造成浮动影响的元素下写一个clear兄弟元素&#xff0c;#clear中写clear&#xff1a;both。清除以上兄弟元素左右浮动造成的影响。 <div id"head"></di…...

wordpress获取分类名称/打开免费百度啊

前言 当 connection 对象构建初始化完成后&#xff0c;我们就可以利用 DB 来进行数据库的 CRUD ( Create、Retrieve、Update、Delete) 操作。本篇文章&#xff0c;我们将会讲述 laravel 如何与 pdo 交互&#xff0c;实现基本数据库服务的原理。 run laravel 中任何数据库的操…...

用老域名做网站还是新域名/免费推广产品平台有哪些

戳过去第26个功能介绍 一. base 主要是封装activity、view、fragment、presenter 基类 1、BaseActivity getPresenter() 获取Presenter对象 getLayoutId();统一初始化 initView();初始化view initLoad(); 加载数据 setListener(); 设置监听事件 setCreateView(); 统一管…...