& | ~ ^ 位运算的蛋疼妙用

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值