判断一个数是否偶数(深度思考)

当看到这个题 很明显就能想到

if(unm % 2 == 0){
	return true;
}else{
	return false;
}

那么如果继续优化 我们都知道 计算机都是2进制计算 那么我们可以从二进制入手
2 ----> 0010 ; 4------->0100 ; 3-------->0011 ; 5------->0101
那么优化之后的代码 是不是就是 判断转换二进制之后的 最后一位是不是0即可

String binarySystemString =  Integer.toBinaryString(num);
if (binarySystemString.endsWith("0")){
	return true; 
 }else {
	 return false;
 }

那么我们继续想 这样虽然是2进制了 但是 还是有进步空间 我们都知道 按位运算是计算机中最快的运算 那么我们可以用按位与解决该问题么
我们都知道 1 -------> 0001
2 ----> 0010 ; 4------->0100 ; 3-------->0011 ; 5------->0101
1&2 —>0000 ; 1&4----->0000 ; 1&3 ---->0001 ; 1&5 ----->0001
两个数的二进制同为1,结果才为1,否则为0
那么我们只需要判断 这个数和1异或之后的数是否为0即可
所以

if((num & 1) == 0){
	return true;
}else{
	return false;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值