`
name327
  • 浏览: 165124 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

异或运算的妙用,两个整型变量交换位置

 
阅读更多

异或运算符号 ^

按照二进制的位进行异或运算 两个位分别为1、0(不分前后)结果为1,其他都为0

例如

 十进制 二进制

1 1

2 10

3 11

4 100

5 101

 

1^2

01

10

结果二进制就是11 转换成十进制就是3

 

4^5

100

101

结果是1  转换成十进制还是1

 

 

根据上面的我们再来看

1^2=3

3^2=?

3的二进制11  2的二进制10

很显然结果是1

 

4^5=1

4^1=5

5^1=4

根据这些 可以得出

如果

a^b=c 成立

那么可以推算出

a^c=b

b^c=a

 

这个特点可以用来两个数字交换

int x=1;  //公式中的a
int y=2;  //公式中的b

x=x^y; //x变成公式中的c 
y=x^y;//这句相当于 b^c可以得出a ,这时候y就有了原来a的值 y=a
x=x^y;//这句中  x=c  y=a   c^a=b 这时候x就有了原来b的值 x=b


//到这里 
//x=2  y=1
//两数字交换完成,没有用到中间变量
 

以上方法支持int 和long类型

 

 

0
1
分享到:
评论

相关推荐

    c异或运算 c异或运算符号

    举个例子,如果你想要交换两个整数a和b的值,你可以利用异或运算实现,如下所示: ```c a = a ^ b; b = a ^ b; a = a ^ b; ``` 在这个过程中,a和b经过两次异或运算后,a的值变成了原来的b,b的值变成了原来的a,...

    新建 360压缩 ZIP 文件 (4).zip_1382_tow_1382.tow_两个数的交换

    4. **位运算法**:对于整型变量,可以利用位运算来实现交换,如使用位与(&)、位或(|)和位非(~)操作。这种方法通常在处理二进制数据或者优化性能时使用。代码如下: ```python a = a & 0xFFFF; // 确保a的最高位...

    C语言位运算符:与、或、异或、取反.pdf

    - 数据交换:在没有额外变量的情况下,可以通过位运算交换两个数的值,例如使用异或运算。 位运算在处理内存、硬件控制、数据编码解码、高效计算等方面都有广泛的应用。了解并熟练掌握位运算符,能够帮助程序员编写...

    C语言位运算总结和运用

    - 值交换:两个变量的值可以使用异或运算互相交换,而无需额外的存储空间。 4. **取反(~)**: 一元运算符,将每个位反转,1变为0,0变为1。常用于创建位掩码。 5. **左移()**: 向左移动位,右边填充0。左移n位相当...

    C语言程序设计提高篇位运算PPT课件.pptx

    异或运算用于位反转或交换两个变量的值。例如,`a = a ^ b; b = a ^ b; a = a ^ b;`可以无须临时变量交换a和b的值。 7. **位运算实例** - 示例1展示了如何使用按位与运算来获取两个整数的共同位。 - 示例2演示了...

    C提供了六种位运算运算符

    - 使用`^`可以实现不通过临时变量交换两个数的功能,例如`a ^= b; b ^= a; a ^= b;`。 #### 4. 左移(`) 左移运算符(`)将操作数向左移动指定的位数,高位溢出丢失,低位用0填充。 - **示例**: - `x ;` 将`x...

    大数的运算

    大数(Large Number)指的是超过普通整型变量所能表示范围的数值。在计算机科学中,常规的数据类型如int、long等对于非常大的数字可能会溢出,无法准确存储。为了解决这个问题,我们需要使用专门的数据结构和算法来...

    C语言实用小程序修订版

    以上介绍了几个实用的C语言小程序函数,包括字符大小写的转换、整型变量的最大最小值的获取以及不使用额外变量来交换两个整数的方法。这些函数简洁而高效,适用于多种编程场景。通过对这些函数的理解和应用,可以...

    C语言 位运算PPT学习教案.pptx

    异或可以用于翻转某数的特定位,或在无额外变量的情况下交换两个数的值。 4. **取反(~)**:这个运算符对操作数的每一位进行取反,即将1变为0,0变为1。通常用于实现二进制的求补操作,或者在运算优先级中具有较高...

    二级C语言 第十一章 位运算.doc

    3. **按位异或(^)**: 两个操作数对应位上如果值不同,则结果位上为1,相同则为0。常用于交换两数的某些位或翻转某些位。 4. **按位取反(~)**: 将操作数的每一位取反,即将1变为0,0变为1。通常用来清零或反转所有位...

    C语言程序设计提高篇位运算PPT学习教案.pptx

    - **按位异或**:`^` 相异则为1,相同则为0,用于翻转特定位或者交换两个数的值。 3. **位运算赋值操作**: - 位运算符可以和赋值运算符结合,例如 `a &= b` 相当于 `a = a & b`,这种运算可以方便地修改变量的...

    java二进制运算基础知识点详解

    异或运算是将两个二进制数逐位对应进行运算。如果两位为“异”,即一位为1一位为0,则结果为1,否则为0。 特殊用法: (1)使指定位翻转:找一个数,对应X要翻转的各位为1,其余为0,使其与X进行异或运算即可。 ...

    腾讯面试题笔试题

    **题目描述**:“不使用额外变量,如何交换两个整型变量a和b的值?” **答案**:`x = x ^ y; y = x ^ y; x = x ^ y;` **解析**:这种方法利用异或运算的性质来实现变量值的交换。异或运算的一个重要性质是,任何数...

    javaday03笔记

    通过三次异或运算,实现了两个变量值的交换。 #### 03.05 Java语言基础(位运算符的基本用法2及面试题) ##### 移位运算符概述 Java提供了三种移位运算符:`, `>>`, 和 `>>>`。 - **左移运算符()**: 将二进制码...

    A Collection of Bit Programming Interview Questions solved in C++.pdf

    给定两个整数变量,不使用额外内存来交换它们的值。 **解决方案概述:** 可以使用异或运算来实现交换。 **代码示例:** ```cpp void swap_integers(int& a, int& b) { a ^= b; b ^= a; a ^= b; } ``` #### 18....

    易语言汇编实现位操作命令

    在汇编中,可以使用XOR指令来实现按位异或,常用于交换变量的值或者清除某些特定位。 5. **MoveLeft** (左移): 左移操作是将二进制数的所有位向左移动指定的次数,右侧空出的位置用0填充(对于无符号数)或符号位...

    2016年9月吉林大学课程机考复习题-C语言程序设计.doc

    4. 位操作符:x^=y-2等价于x=x^y-2,这是位异或操作符的使用,可以用于交换两个变量的值或者对变量的某部分位进行翻转。 5. 函数结构:C语言中的函数通常包括两部分,函数说明部分(声明函数的返回类型和参数列表)...

    2013小米软件开发人员招聘笔试题

    异或运算满足交换律和结合律。因此,遍历整个数组,将所有元素进行异或运算,最终结果即为仅出现一次的数字。 以上是对2013年小米公司软件开发类人员招聘笔试题中部分知识点的详细解析,希望能帮助理解和掌握相关的...

    腾讯最新笔试题

    不使用额外变量的情况下,如何交换两个整型变量 `a` 和 `b` 的值? **解析:** 可以使用加减法或异或操作来实现不使用额外变量的交换。这里展示使用加减法的方法: ```c++ a = a + b; b = a - b; a = a - b; ``` ...

    c++程序设计综合练习题-读程序写结果题.doc

    6. 位运算:`sw`宏定义使用异或操作符`^`来交换两个整数的值,异或具有交换性,即`x^=y`后`y^=x`再`x^=y`会使`x`和`y`的值互换。 7. 循环结构:第6题的程序使用了嵌套循环,外层循环控制行数,内层循环控制每行的星...

Global site tag (gtag.js) - Google Analytics