`
daiyuanyang
  • 浏览: 21613 次
  • 性别: 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++的复数运算

    复数类`complex`包含两个私有成员变量:`real`代表实部,`image`代表虚部。类中有四个构造函数,一个是默认构造函数,用于初始化为零复数;另一个是带有两个参数的构造函数,用于指定复数的实部和虚部。 在类的外部...

    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++ 高精度运算 详细解法C++ 高精度运算 详细解法C++ 高精度运算 详细解法C++ 高精度运算 详细解法C++ 高精度运算 详细解法C++ 高精度运算 详细解法C++ 高精度运算 详细解法C++ 高精度运算 详细解法C++ 高精度运算 ...

    好用的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++的复数运算器

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

    C++ 简单四则运算

    在四则运算器中,程序会提示用户输入两个数字,然后调用相应的运算方法,最后输出结果。例如: ```cpp int num1, num2; std::cout 请输入第一个数字: "; std::cin >> num1; std::cout 请输入第二个数字: "; ...

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

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

    C++编程变量命名规范

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

    C++支持的四则运算计算器

    总的来说,这个C++实现的四则运算计算器项目是一个很好的学习实践,它涵盖了C++的基础语法、输入输出、数据结构(栈)以及表达式求值的算法。通过这个项目,开发者可以加深对C++的理解,提升编程能力。

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

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

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

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

    C++大整数运算代码

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

    在C/C++项目中使用全局变量的方法

    ### 在C/C++项目中使用全局变量的方法 #### 概述 在开发C/C++项目时,有时需要在多个源文件之间共享数据或状态信息。全局变量作为一种简单且直观的数据共享方式,在某些场景下非常实用。然而,不当的使用全局变量...

    c++大数运算算法实现_源代码 原创

    在C++编程中,大数运算通常涉及到处理超出标准整型或浮点型变量范围的数值。本项目提供了一套原创的源代码实现,能够处理任意位数的大数进行加、减、乘、除操作。这在一些特定的计算场景,如密码学、计算机图形学...

    C++信号的微分积分运算

    本文将深入探讨C++如何实现信号的微分和积分运算,并结合给出的"weijifen.txt"文件,来理解这些概念在实际编程中的应用。 首先,微分是数学分析的基本操作之一,它描述了函数变化率的概念。在信号处理中,微分可以...

Global site tag (gtag.js) - Google Analytics