Java判断奇偶性

Java判断奇偶性

public class  ImparityCheck{
	public static void main(String[] args) {
		/*
		 * 可以通过判断余数是否为0来判断“奇数”和“偶数”。
		 * 不能用余数是否为1来判断“奇数”和“偶数”,因为还有负数。
		 */
		int a =-2147483647;
		String str=a%2==0?"偶数":"奇数";
		String str2=a%2!=0?"奇数":"偶数";
	
		System.out.println(str+str2);
		
		/*
		 * 通过位运算来判断“奇数”和“偶数”。 
		 * 因为当数值存储为二进制时,判断它是奇数还是偶数只需要看最低位。
		 * &运算特点是,有0即0,当我们用变量a&1时,则一定会把最低位之前的所有位全部变成0。
		 * 这个时候,如果变量a是偶数,那么最低位为0,则(a&1)最终结果为0。
		 * 如果变量a是奇数,那么最低位为1,则(a&1)最终结果为1。
		 * 变量a&1的结果,有且仅有以上两种情况。
		 */
		String str3=(a&1)==1?"奇数":"偶数";
		String str4=(a&1)!=1?"偶数":"奇数";
		String str5=(a&1)==0?"偶数":"奇数";
		String str6=(a&1)!=0?"奇数":"偶数";
		String str7=(a&1)<1?"偶数":"奇数";
		String str8=(a&1)>0?"奇数":"偶数";
		System.out.println(str3+str4+str5+str6+str7+str8);
		
		
		/*
		 * int类型是32位2进制,最高位为符号位,我们可以通过按位左位移运算来把变量a的最低位移到最高位,
		 * 然后通过判断变量a按位左位移后的数值是否是负数来判断一开始变量a的最低位是1还是0。
		 * 也就是int类型按位左位移31位即可把最低位移到最高位。
		 */
		String str9=a<<31<0?"奇数":"偶数";
		System.out.println(str9);
		/*
		 * 貌似位运算和比较运算没有优先级顺序,所以从左往右算。
		 * 也可以写成String str9=(a<<31)<0?"奇数":"偶数";
		 */
		
		String str10=(((a>>>1)<<1)==a)?"偶数":"奇数";//无符号右位移
		String str11=(((a>>>1)<<1)!=a)?"奇数":"偶数";
		System.out.println(str10+str11);
		/*
		 * 当将变量a进行向右移1位时,则二进制数最低位溢出。
		 * 当再将它向左移1位时,则此时的最低位补0.
		 * 此时得到的值如果和原来的变量a的值相等,则变量a本身二进制最低位为0,则为偶数
		 * 如果不相等,则变量a本身二进制最低位为1,则为奇数
		 */
		String str12=(((a>>1)<<1)==a)?"偶数":"奇数";
		String str13=(((a>>1)<<1)!=a)?"奇数":"偶数";
		System.out.println(str12+str13);
	}
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值