语言的变量交换

不用第三个变量交换两个变量在面试题或者笔试题中无数次被提到,事实上,有些答案是理论性的,不是准确的。以整型为例,如下对比不同交换方式的差异。

不同的交换方式

  • 利用中间变量
    c = a;
    00C02533 8B 45 F8 mov eax,dword ptr [a]
    00C02536 89 45 E0 mov dword ptr [c],eax
    a = b;
    00C02539 8B 45 EC mov eax,dword ptr [b]
    00C0253C 89 45 F8 mov dword ptr [a],eax
    b = c;
    00C0253F 8B 45 E0 mov eax,dword ptr [c]
    00C02542 89 45 EC mov dword ptr [b],eax
  • xchg汇编
    __asm xchg eax, a
    __asm xchg eax, b
    __asm xchg eax, a
  • 不用中间变量
    a = a ^ b;
    00AA10B0 mov edx,dword ptr [b]
    00AA10B3 mov ecx,edx
    00AA10B5 xor ecx,dword ptr [a]
    b = a ^ b;
    00AA10B8 xor edx,ecx
    00AA10BA mov eax,edx
    00AA10BC mov dword ptr [b],edx
    00AA10BF xor eax,ecx
    a = a ^ b;

不能仅仅通过指令个数确定三者的效率。


风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/150134.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

初始MYSQL数据库(7)—— 视图

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: MYSQL 引言 前面我们学习MySQL数据库时,创建表之后,会在表中插入数据,在需要的时候,也会进行…

stm32 gpio I/O模式以及iic访问

1&#xff0c;硬件补充连接原理图引脚 #define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH(up to 1 MB) base address in the alias region */ #define CCMDATARAM_BASE ((uint32_t)0x10000000) /*!< CCM(core coupled mem…

点亮一个LED灯

一、任务分析 一个灯怎么样才会亮&#xff1f; 图中的小灯两端接正负极&#xff0c;小灯就会点亮&#xff0c;但是我们不能主动控制灯的亮灭&#xff0c;于是加入了开关。开关打开断开小灯正极&#xff0c;小灯就会熄灭&#xff0c;反之则点亮。 在板子上的灯是如何连接的&…

【学习笔记】exkmp(Z函数)

本文参考洛谷题解&#xff1a;https://www.luogu.com.cn/article/cq4b4e5f 侵删 前言 exkmp 和 kmp 要求的东西比较类似。 exkmp 可以求出 a i . . . n a_{i...n} ai...n​ 和 b b b 的最长公共前缀。 这玩意也称 z 函数。 算法流程 求解 nxt 数组 定义 n x t i nxt_i …

【大模型对话 的界面搭建-Open WebUI】

Open WebUI 前身就是 Ollama WebUI&#xff0c;为 Ollama 提供一个可视化界面&#xff0c;可以完全离线运行&#xff0c;支持 Ollama 和兼容 OpenAI 的 API。 github网址 https://github.com/open-webui/open-webui安装 第一种 docker安装 如果ollama 安装在同一台服务器上&…

博士德王道4S管理系统存在SQL注入漏洞

漏洞描述 博士王道汽车4S企业管理系统&#xff08;以下简称“王道4S系统”&#xff09;是一套专门为汽车销售和维修服务企业开发的管理软件。该系统是博士德软件公司集10余年汽车行业管理软件研发经验之大成&#xff0c;精心打造的最新一代汽车4S企业管理解决方案。石家庄博士…

三子棋小游戏

使用C语言编写代码&#xff0c;实现一个简单小游戏---三子棋 这里创建1个game.h文件&#xff0c;用来声明函数、宏的文件&#xff0c;一个game.c文件用来实现函数game&#xff08;&#xff09;&#xff0c;一个play.h文件用来作为该游戏的源文件。 具体代码如下&#xff1a; …

文件上传、amrkdown编辑器

一、文件上传 这里我以图片为例&#xff0c;进行上传&#xff0c;上传到阿里云oss&#xff08;对象存在中&#xff09; 首先&#xff0c;我们先梳理一下&#xff0c;图片上传的流程 1、前端选择文件&#xff0c;提交文件 前端提交文件&#xff0c;我们可以使用ElementUI中的…

网络:TCP协议-报头字段

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 文章目录 前言一、TCP协议格式16位源端口号 和 16位目的端口号4位首部长度16位窗口大小32位序号 和 32位确认序号6种标记位 和 16位紧急指针 总结 前言 本文是我对于TCP协…

大数据新视界 --大数据大厂之大数据存储技术大比拼:选择最适合你的方案

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【hot100-java】【下一个排列】

R8-技巧篇 最近速成java中&#xff0c;算法基础需要兼顾。 class Solution {public void nextPermutation(int[] nums) {int lennums.length;List<Integer>list new ArrayList<>();boolean flagtrue;for (int ilen-1;i>0;i--){list.add(nums[i]);Collections.…

[spring]用MyBatis XML操作数据库 其他查询操作 数据库连接池 mysql企业开发规范

文章目录 一. MyBatis XML配置文件1. 配置链接字符串和MyBatis2. 写持久层代码方法定义Interface方法实现xml测试 3. 增删改查增:删改查 二. 开发规范(mysql)三. 其他查询操作1. 多表查询2. #{} 和 ${}(面试题)使用区别 排序功能like查询 三. 数据库连接池 一. MyBatis XML配置…

矩阵的逆怎么算?逆矩阵公式来了(附逆矩阵计算器)

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f4da; 在线性代数中&#xff0c;逆矩阵是一个非常重要的概念。一个方阵如果存在逆矩阵&#xff0c;意味着该矩阵是可逆的&#xff0c;或者说是非奇异的。逆矩阵在解决线性方程组、计算矩阵的方根等方面有着广泛的应…

啤酒过滤——关于过滤助剂的介绍

在啤酒的酿造过程中&#xff0c;过滤是一个关键步骤&#xff0c;在啤酒厂中最常用的过滤助剂主要有两种&#xff1a;硅藻土和珍珠岩。它们能够帮助去除杂质&#xff0c;确保啤酒的清澈和口感。过滤助剂通常以粉状形式存在&#xff0c;它们被涂抹在过滤机的支撑材料上&#xff0…

应急响应--来不来得及走流程...

免责声明&#xff1a;本文仅做分享&#xff01; 应急响应详解 概述 应急响应是现代信息安全管理中的重要一环。随着网络威胁的日益复杂化&#xff0c;企业和组织必须具备快速响应安全事件的能力&#xff0c;以最大限度地减少数据泄露、业务中断以及经济损失。本文将从应急响应…

衍射的角谱理论

一、单色平面波与本征函数 不考虑夫琅禾费近似, 则相干光场在给定二平面间的传播过程就是通过一个二维线性空不变系统。 上式函数是这个系统的本征函数,表示振幅为1的平面波在xy平面上的复振幅分布,空间频率分量 = cos / , = cos / 与平面波的传播方向相联系, 空间…

单链表进阶

之前已经介绍过单链表及其一些简单的功能 这次来简单介绍单链表一些的其他接口 1.在指定位置之前插入数据 具体原码&#xff0c;三个参数&#xff0c;phead是链表的指针&#xff0c;pos是节点的地址&#xff0c;x是需要插入的数据。 pos不能为空指针&#xff0c;因为pos为空…

P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪

原理构造法 令ans c1 c2 .. cn ci 余数 * &#xff08;c1乘到cn但不乘ci&#xff09;* &#xff08;c1乘到cn但不乘ci 的逆元&#xff0c;模ci意义下&#xff09; 定理&#xff1a;在模M c1乘到cn 意义下&#xff0c;解唯一。 #include<bits/stdc.h> #define in…

如何修改音频的音量增益

一、前言 在开发音频相关的功能&#xff08;比如说语音通话、播放音乐&#xff09;时&#xff0c;经常会遇到音量太小的问题&#xff0c;这时候就需要我们对原始数据进行处理。本文将介绍如何通过修改原始音频数据来增加增益&#xff0c;本文包含如下内容&#xff1a; 1.音频数…

HTML标题标签与其属性

在HTML中标题是通过<h1..6> </h1...6>标签进行定义的。其中<h1>是定义最大的标题&#xff0c;<h6>是定义最小的标题。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"…