一个有趣的swap函数
C语言版:
void swap (int a, int b)
{
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}
原理: 
    a ^ a == 0 
    0 ^ b == b 
    异或:同则为零。异则为一 
    a ^ (b ^ a) == b 
    b ^ (b ^ a) == a
一个有趣的swap函数的更多相关文章
- 自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
		
验证的代码: #include <stdio.h> int main(){ char c = 'z'; ) + (c << ) + () + 'a'; printf(" ...
 - [Effective C++ --025]考虑写出一个不抛异常的swap函数
		
引言 在我的上一篇博客中,讲述了swap函数. 原本swap只是STL的一部分,而后成为异常安全性编程的脊柱,以及用来处理自我赋值可能性. 一.swap函数 标准库的swap函数如下: namespa ...
 - EC读书笔记系列之13:条款25 考虑写出一个不抛异常的swap函数
		
记住: ★当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定其不抛出异常 ★若你提供一个member swap,也该提供一个non-member swap来调用前者.对于cla ...
 - 《Effective C++》item25:考虑写出一个不抛异常的swap函数
		
std::swap()是个很有用的函数,它可以用来交换两个变量的值,包括用户自定义的类型,只要类型支持copying操作,尤其是在STL中使用的很多,例如: int main(int argc, _T ...
 - 考虑写一个不抛出异常的swap函数
		
我们可以调用std下的swap函数,这是一个模板函数:既可以: ; ; std::swap(a,b); cout<<"a = "<<a<<&qu ...
 - 条款25:考虑写出一个不抛出异常的swap函数
		
首先说下标准库的swap算法: namespace std{ template<typename T> void swap(T & a, T & b) { T tmp = ...
 - Effective C++ Item 25 考虑写出一个不抛异常的swap函数
		
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛 ...
 - 读书笔记_Effective_C++_条款二十五: 考虑写出一个不抛出异常的swap函数
		
在之前的理论上调用对象的operator=是这样做的 void swap(A& x) { std::swap(a, x.a); } A& operator=(const A& ...
 - 【小贴士】关于transitionEnd/animate的一个有趣故事
		
前言 在很久之前,我们项目有一个动画功能,功能本身很简单,便是典型的右进左出,并且带动画功能 以当时来说,虽然很简单,但是受限于框架本身的难度,就直接使用了CSS3的方式完成了功能 当时主要使用tra ...
 
随机推荐
- MYSQL 语法大全自己总结的
			
mysql语法大全 --------数据链接---------------------数据库服务启动net start mysql --关闭服务net stop mysql --登录 -u,-p后面不 ...
 - GitHub详解(转)
			
GitHub 是一个共享虚拟主机服务,用于存放使用Git版本控制的软件代码和内容项目.它由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath.PJ Hyett ...
 - MapReduce调度与执行原理之作业提交
			
前言 :本文旨在理清在Hadoop中一个MapReduce作业(Job)在提交到框架后的整个生命周期过程,权作总结和日后参考,如有问题,请不吝赐教.本文不涉及Hadoop的架构设计,如有兴趣请参考相关 ...
 - MySQL 暂时文件夹
			
MySQL数据文件夹/data/mysql所在的上层文件夹/data磁盘空间不足导致MySQL启动失败,所以清理了/data文件夹下除了mysql子文件夹外的其它无用文件夹.重新启动发现还是失败.检查 ...
 - The Dole Queue
			
The Dole Queue Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit cid ...
 - asp.net笔试题
			
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...
 - delphi之完美Splash方案(在TfrmMain.FormCreate里不断调用TfrmSplash显示加载进度文字,并且及时Update显示)
			
前言:网上有很多介绍delphi创建闪屏的代码,大多只是在程序开启前显示一个闪屏,但是却没有说如何在闪屏上显示程序加载的进度,于是笔者有意思介绍一下这种闪屏方式. 1.创建一个窗体(TfrmSplas ...
 - javascript事件委托,事件代理,元素绑定多个事件之练习篇
			
<ul id="parent-list"> <li id="post-1">item1</li> <li id=&qu ...
 - Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
			
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
 - EFI/GPT探索(为何win7分区时创建100M隐藏分区)
			
EFI/GPT探索(为何win7分区时创建100M隐藏分区) 转自 http://blog.tomatoit.net/article.asp?id=348 EFI/GPT是新一代的固件/启动管理技术, ...