位运算

本文探讨了二进制位运算的四个基本操作:按位与(&), 按位或(|), 按位异或(^)和按位非(~),并展示了如何通过位运算判断奇偶性、交换数字、查找不重复数字及快速幂计算。还介绍了如何利用位运算技巧简化代码实现。

基本内容

按位与(&)

参加运算的两个二进制数,同时为1,才为1,否则为0。举例 3&5=1。
在这里插入图片描述

按位或(|)

参加运算的两个二进制数,一个为1就为1,否则为0。2 | 4=6在这里插入图片描述

按位异或(^)

参加运算的两个二进制数,位不同则为1,位相同则为0。6^7=1

在这里插入图片描述

按位非(~)

需要一个操作数,非运算会将该数的底层二进制码(补码)取反。~ -5 =4在这里插入图片描述

链接:详细位运算
注意:右移除以2
注意:左移乘以2

装逼技巧:

1.如果把 n 以二进制的形式展示的话,其实我们只需要判断最后一个二进制位是 1 还是 0 就行了,如果是 1 的话,代表是奇数,如果是 0 则代表是偶数,所以采用位运算的方式的话,代码如下:

判断一个数是奇数还是偶数

if(n & 1 == 1){
    // n 是个奇数。
}

基与2进制进行比较
3&5=1 按位与 同位相同则为1

2.交换两位数
x = x ^ y   // (1)
y = x ^ y   // (2)
x = x ^ y   // (3)

按位异或 位不同则为一

3.寻找不重复的数字(只适合在最多两次相同的也串数字)
int find(int[] arr){
    int tmp = arr[0];
    for(int i = 1;i < arr.length; i++){
        tmp = tmp ^ arr[i];
    }
    return tmp;
}
4.m的n次方

大佬链接-位运算

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值