位运算的骚操作

本文深入探讨了二进制数在计算机科学中的多种实用技巧,包括判断奇偶数、检查二进制位、交换变量值、计算绝对值以及快速进行乘除运算。通过具体的Java代码示例,读者可以直观理解并掌握这些高效算法。

1、判断奇偶数(二进制中,末位是0→偶数,末位是1→奇数。n&1=0→偶数,n&1=1→奇数)

int a=10,b=11;
System.out.println(a+"是"+((a&1)==0?"偶数":"奇数"));
System.out.println(b+"是"+((b&1)==0?"偶数":"奇数"));
//10是偶数
//11是奇数

2、判断二进制某位是0还是1(将该位右移n-1位,和1作&运算)

System.out.println("25的第4位是"+((25>>3)&1));
System.out.println("25的第3位是"+((25>>2)&1));
//25的第4位是1
//25的第3位是0

3、交换两个整型变量值

int x=20,y=30;
x=x^y;
y=x^y;
x=x^y;
System.out.println("x=="+ x + "  y=="+ y);
//x==30  y==20

4、不用判断语句,求整数的绝对值

int i=-9,j=26;
System.out.println(i+"的绝对值是"+((i^(i>>31))+(i>>>31)));
System.out.println(j+"的绝对值是"+((j^(j>>31))+(j>>>31)));
//若已知i是负数↓
System.out.println(i+"的绝对值是"+((i^-1)+1));
//-9的绝对值是9
//26的绝对值是26
//-9的绝对值是9

5、快速乘除 2^n (a<<n即a * 2^n, a>>n即a / 2^n)

int k=10;
System.out.println(k+"x2="+(k<<1));
System.out.println(k+"/2="+(k>>1));
//10x2=20
//10/2=5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在逃八阿哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值