当前位置:码农谷 > 算法与程序 > 使用位运算交换两个数

使用位运算交换两个数

所属学科:C语言 难度: 关注度:2027

算法解析

A是位异或的运算符,即比较相同两位的异同,如果相同,则赋值为0,否则为1。

在本程序中a、b的初始值分别为3和5,对应的二进制分别为00000011和00000101。经过下面的3个步骤交换了两个变量的值。

(1)代码第6行,a的二进制变为00000110,b仍为00000101。即b不变,取出所有不相等的位存入a。

(2)代码第7行,a的二进制为00000110,b变为00000011。即a不变,取出所有不相等的位存入b。此时b的值为a的初始值。

(3)代码第8行,a的二进制变为00000101,b为00000011。即b不变,取出所有不相等的位存入a。此时a的值为b的初始值。到此完成a、b两变量值的变换。 

本算法最大的优点是省略了中间变量,但只能用于相同类型数的交换。

算法代码

源程序如下所示。

#include "stdio.h"
int main( )
{
    int a = 3;
    int b = 5;

关注微信,获得更多免费资源
关于我们   |   免责声明   |   联系我们   |   网站地图   |   HR交流群   |   学生交流群   |   教师交流群

码农谷   版权所有 © 2015-2017   湘ICP备16018319号-1