美文网首页
如何高效率的转换两个程序变量的值

如何高效率的转换两个程序变量的值

作者: 0爱上1 | 来源:发表于2019-06-02 13:35 被阅读0次

前言

最近在看《深入理解计算机系统》,学习到了一个高效转换程序中两个变量的方法,分享出来


众所周知的转换两个变量的方式是引入第三个变量,来实现转换的功能,类似下面的伪代码

int a = ...;
int b = ...;

// 转换a,b变量,引入变量c
int c = a;
a = b;
b = c;

书中介绍了一中高效转换的方式利用了位运算

我们知道指针(或引用)a, b指向的位置的值本质上也是一个二进制数值,而位运算中有一个重要的异或运算: ^

所谓异或运算,即两个位不同时为真,相同即为假
且对于任一位向量a,有a^a = 0,利用这一属性,就可以完成高效互换变量a,b

下面是伪代码:

inplaceSwap(int a, int b){
    b = a ^ b;
    a = a ^ b;// b
    b = a ^ b;// a
}

总结

随着编程的年限增加,越需要掌握好底层计算机知识,加油

相关文章

  • 如何高效率的转换两个程序变量的值

    前言 最近在看《深入理解计算机系统》,学习到了一个高效转换程序中两个变量的方法,分享出来 众所周知的转换两个变量的...

  • Java中的强制类型转换

    ,当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢? 显然,这种转换是不会自动进行的...

  • 02_python基础_变量

    本文档目标:掌握常见变量的基本操作及各变量间转换 变量定义 变量为存储在内存中的值,用于程序临时保存数据使用。变量...

  • xpose 命令—数据转置

    Description xpose转置数据,将变量转换为观测值,并将观测值转换为变量。所有新变量 - 即由转置创建...

  • 作用域

    程序需要存储变量中的值,并且能在之后对这个值进行访问或修改。这些变量存储在哪里?程序如何找到他们?这些问题需要一套...

  • C#第二次作业01

    #作业要求 交换两个变量的值 #程序 namespace ConsoleApplication1 { clas...

  • 数据地图:如何大致看一下数据分布情况

    问题描述 我们每次拿到数据时,需要看看数据是否有如下的潜在问题: 重复变量 可能的错误 丢失值 变量转换 如何大致...

  • [译] Python编程实例(02): 不使用临时变量交换两个数

    问题描述 该程序从用户那里获取两个值,并在不使用临时变量的情况下交换它们。 解决方案 从用户那里获取这两个变量的值...

  • TensorFlow(2) 基本操作

    创建变量 特殊矩阵和常量 创建随机值 示例程序 保存模型 NumPy数据转换成TensorFlow数据 tf.pl...

  • 《你不知道的js》作用域和闭包

    前言 储存和访问变量的值,这种能力将状态带给了程序需要讨论的问题:变量储存在哪里?程序需要时如何找到它们? 202...

网友评论

      本文标题:如何高效率的转换两个程序变量的值

      本文链接:https://www.haomeiwen.com/subject/sarxxctx.html