读书人

[时时更新] amp; | ~ ^ 位运算的蛋疼妙用

发布时间: 2012-11-21 08:23:26 作者: rapoo

[随时更新] & | ~ ^ 位运算的蛋疼妙用

1. 交换两个数但不能使用临时变量

// method 1

void swap (int* a, int* b) {

??? *a ^= *b; *b ^= *a; *a ^= *b;

}

?

// method 2

void swap (int* a, int* b) { // 乘号改成加号时,除号改成减号。

????????? // 当 *a 和 *b 都很大时,第一句可能会溢出。

??? *a *= *b; *b = *a / *b; *a /= *b;

}

?

2. 求两个数中较大的一个但不能使用比较语句

?

int max (int a, int b) { // a 与 b 的符号必须相同

??? return a ^ b | a;

}

读书人网 >编程

热点推荐