在我们写程序的时候,经常会遇到两个变量A与B交换的操作,通常大家会借助第三个变量来实现:
如:C=A;A=B;B=C;
如:A=A+B;B=A-B;A=A-B;
- 第三种方法是得用位异或运算来实现,也是效率最高的一种,在大量数据交换的时候,效率明显优于前两种方法,
如:A=A^B;B=A^B;A=A^B;
原理:利用一个数异或本身等于0和异或运算符合交换率。
public class Test{
public static void main(String args[]){
int A=2;
int B=3;
int C;
System.out.println("A="+A);
System.out.println("B="+B);
System.out.println("method 1");
C=A;
A=B;
B=C;
System.out.println("A="+A);
System.out.println("B="+B);
System.out.println("method 2");
A=A+B;B=A-B;A=A-B;
System.out.println("A="+A);
System.out.println("B="+B);
System.out.println("method 3");
A=A^B;B=A^B;A=A^B;
System.out.println("A="+A);
System.out.println("B="+B);
}
}
分享到:
相关推荐
这两个快捷键允许你在当前行的基础上进行复制,并将复制的内容移动到上下行的位置,非常方便调整代码顺序。 **Alt+↓ / Alt+↑:** 当前行与下一行/上一行交换位置。这两组快捷键可以让你无需进行剪切粘贴操作即可...
Socket编程是网络通信中的基础,它允许两个程序通过网络交换数据。在这个例子中,我们看到的是一个C#实现的Socket文件传输示例,用于发送文本文件。这个程序分为两部分:发送文件的窗体和接收文件的窗体。 首先,让...
- **磁盘表面**:每个盘片都有两个可使用的表面,即上表面和下表面。 - **磁头**:磁头用于读写数据,与磁盘表面接触以完成数据的操作。 - **柱面**、**扇区**:这些概念用于描述硬盘内部的数据存储结构。柱面是指...
在实现动画方面,本书提到了两种动画实现方法:暂停刷新和重绘加交换。这两种方法都是通过改变图形的显示状态来产生动态效果的常用技术。 书中还强调了OpenGL的状态管理机制,这是学习OpenGL时必须掌握的基础。状态...
它接受两个参数:`ptr`(指向原缓冲区的指针)和`size`(新的缓冲区大小)。成功时返回指向新分配内存的指针,失败则返回NULL。同样,新分配的内存只能通过`tpfree`释放。 #### 1.3 `tpfree` `tpfree`函数用于释放...
这两个好象是一样的,此时*p可以修改,而p不能修改。 (4)const char * const p 这种是地址及指向对象都不能修改。 -------------------------------------------------------------------------- 6.下面是C语言中...
假设我们需要编写一个函数来交换两个变量的值,而这些变量可能是不同类型的数据。在C语言中,我们可能需要为每种类型编写一个专门的函数。而在C++中,我们可以使用函数重载来简化这一过程。 ```cpp #include using...
* swapDepths:交换两个 MC 的深度 * tellTarget:指定 Action 命令生效的目标 * toggleHighQuality:在高画质和低画质间切换 * trace:跟踪调试 * unloadMovie:卸载 MC * var:声明局部变量 * while:当..成立时.....
* SwapDepths:交换两个MC的深度 * TellTarget:指定Action命令生效的目标 * ToggleHighQuality:在高画质和低画质间切换 * Trace:跟踪调试 * UnloadMovie:卸载MC * Var:声明局部变量 * While:当..成立时.. * ...
XMLHttpRequest对象的open方法用来初始化一个请求,第二个参数是请求的类型(GET、POST等),第三个参数表示请求是否异步进行。在实际的应用中,通常需要进行错误处理和状态检查,以确保在请求出错或者服务器返回...