`
daiyuanyang
  • 浏览: 22034 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C++ 用bit运算让两个变量互换。

阅读更多
前几天用bit运算做了一个变量互换,公式如下:

a^=b^=a^=b;
即:
a^=b;
b^=a;
a^=b;

可以在不使用第三个变量的情况下实现两变量的互换,因为在计算机里运算都是使用二进制的算法,

"^"位异或运算示例如下:
int a = 3, b = 4
a ^= b:
3 = 0011
^4 = 0100
-------------
a = 0111

b ^= a;
4 = 0100
^a = 0111
-------------
b = 0011 = 3;

a ^= b

a = 0111
^b = 0011
---------------
a = 0100 = 4;

结果为 : a = 4 ,b = 3

也可以理解为: 两个变量互换时,二进制位相同的保留,不同的互换,则实现了变量的互换。

补充:Point运算只能+、-,此方法对point运算无效!

分享到:
评论
2 楼 zop_tt 2011-04-14  
异或  相异为一 相同为零..  (白)
1 楼 zop_tt 2011-04-14  
 

相关推荐

    用C++编写两个数的四则运算算法

    通过对两个整数进行四则运算的操作,不仅巩固了数学运算的基础,也加深了对C++语言特性的理解。需要注意的是,在实际开发过程中,应当更加注重代码的健壮性和可维护性,例如通过增加异常处理、优化数据成员的使用等...

    C++中类使用全局变量

    在C++编程语言中,全局变量是在程序的任何作用域之外声明的变量,可以在程序的多个函数或类中被访问。它们在整个程序的生命周期内都存在,从程序开始执行到结束时保持其值。全局变量的使用有其优点,如共享数据和...

    C++ 二进制运算

    让我们通过一个具体的实例来演示如何在C++中使用这些二进制运算符: ```cpp #include int main() { int a = 3; int b = 5; std::cout (a & b) ; std::cout | b = " (a | b) ; std::cout ^ b = " (a ^ b) ; ...

    好用的C++布尔运算程序

    这使得我们可以用布尔运算处理非布尔类型的变量。 在描述中的C++程序可能包含对这些运算符的演示和应用,展示了如何在实际编程场景中使用它们。通过使用VC++6.0作为编译环境,开发者可以学习到如何在老版本的编译器...

    C++类混合运算

    例如,`Number operator+(Number const& other)`会定义两个`Number`对象相加的操作。此外,可能还有`operator*`、`operator-`和`operator/`等。这些重载的运算符函数内部实现了对应的数学逻辑。 接着,为了支持括号...

    c++实现向量运算.7z

    在C++编程语言中,向量运算是一种基本的线性代数操作,广泛应用于图形学、物理学、机器学习以及各种科学计算中。本压缩包文件“c++实现向量运算.7z”很可能包含了用于演示或教学如何在C++中进行向量运算的源代码示例...

    C++ 包含类两个类互相调用彼此的类成员变量和方法

    当我们有两个类A和B,且它们需要互相调用对方的成员时,通常会遇到两个主要问题:前置声明(Forward Declaration)和循环包含(Circular Inclusion)。让我们逐一分析: 1. 前置声明:在类A中使用类B的成员之前,...

    C++ QT 矩阵运算器

    在本矩阵运算器中,用户可以输入两个矩阵进行加减运算,也可以输入一个矩阵和一个标量进行乘法。矩阵转置是将矩阵的行变成列,列变成行的过程,这个功能在很多数学问题中非常有用。这些运算的核心算法需要精确且高效...

    C++大整数运算

    3. **比较运算**:为了比较两个大整数的大小,我们可以从低位到高位逐位比较,直到找到不同的位或者遍历完所有位。根据比较结果返回相应的比较符号(小于、等于或大于)。 4. **输出运算**:为了将大整数打印出来,...

    C++的复数运算器

    首先,我们需要定义一个复数类cnum,它具有实部和虚部两个私有成员变量,并且提供了相应的构造函数和运算符重载函数。构造函数中,我们可以初始化实部和虚部的值,或者使用默认值为0。 在运算符重载函数中,我们...

    基于C++与链表的两个一元多项式的基本运算(加法、减法、 乘法和求导运算)

    1. **加法和减法**: 对于一元多项式的加法和减法,我们可以遍历两个多项式的链表,对相同指数的项进行相应的加法或减法运算,然后将结果添加到新的链表中。如果两个多项式中存在一个没有对应指数的项,则直接将其...

    c++的大数运算可以实现基本运算

    2. **加法**:对于两个大数的加法,可以使用类似于小学数学的方法,从低位到高位逐位相加,并处理进位。如果某位相加大于9(或255,取决于你的数据类型),则需要向上一位进位。 3. **减法**:减法可以转换为加法来...

    C++ 大整数运算库(附源码)

    用于运算、输出大整数的C++库,使用简便,即下即用,已重载各类运算符,支持ostream(cout)输出和字符串输出、字符串构造、最大公约数和最小公倍数计算。 具体用法、函数说明可以在文件夹中的README.txt中找到

    C++编程变量命名规范

    ### C++编程变量命名规范详解 #### 一、引言 在C++程序设计中,良好的变量命名习惯不仅能提升代码的可读性与维护性,还能帮助开发人员更快速地理解代码逻辑。本文将详细介绍C++变量命名的一般规则及推荐做法,并...

    c++编写程序实现两个超长正整数(每个最长80位数字)的减法运算

    编写程序实现两个超长正整数(每个最长80位数字)的减法运算。 [输入形式] 从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。 1.第一行是超长正整数A; 2.第二行是超长正整数B; [输出形式] 输出只有一行,是...

    使用C++实现矩阵运算(运算符重载)

    在C++编程中,矩阵运算是一项常见的任务,特别是在科学计算、图像处理以及各种数学应用中。本项目通过使用运算符重载技术实现了矩阵的基本运算,包括加法、减法、乘法等。下面将详细解释这个主题中的关键知识点。 ...

    C++ 四则运算混合计算器源码

    4. **运算**:在后缀表达式中,连续的两个元素表示一个运算,第一个元素是操作数,第二个元素是运算符。取出这两个元素进行运算,结果再压回值栈。 5. **错误处理**:程序应能识别并处理无效的输入,如除以零、未...

    数据结构之C++四则运算(自己写的堆栈)

    当遇到运算符时,我们将栈顶的两个元素弹出,进行相应的运算,然后将结果压回堆栈。这个过程会持续到表达式的所有字符都被处理,最后留在堆栈顶部的就是最终的结果。 “四则运算”指的是加法、减法、乘法和除法。在...

    C++大整数运算代码

    例如,在做加法时,可以将两个大整数的每一位对应相加,然后处理进位。如果某位上的和超过9,那么进位值会被压入栈中,等待与下一位相加。这个过程类似于手工进行长加法。 对于减法,同样可以利用栈来处理借位。...

Global site tag (gtag.js) - Google Analytics