Java按位与与==和+的优先级比较

&与==

1.代码篇

import java.util.Scanner;

public class NumberOne {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);

		System.out.print("Please enter a number > ");
		while (scanner.hasNextInt()) {

			int a = scanner.nextInt();

			System.out.println(countOne(a));
			System.out.print("Please enter a number > ");			
		}
	}
	public static int countOne (int number) {

		int b = 1, counter = 0;

			while (number != 0) {

				if (number & b == 1){
				
					counter++;
				}

				number = number >>> 1;
			}

		return counter;
	}
}

2.报错提醒

1
原因是编译器先进行b==1的返回值计算在进行按位与。

3.改错方式

import java.util.Scanner;

public class NumberOne {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);

		System.out.print("Please enter a number > ");
		while (scanner.hasNextInt()) {

			int a = scanner.nextInt();

			System.out.println(countOne(a));
			System.out.print("Please enter a number > ");			
		}
	}
	public static int countOne (int number) {

		int b = 1, counter = 0;

			while (number != 0) {

				if ((number & b) == 1){
				
					counter++;
				}

				number = number >>> 1;
			}

		return counter;
	}
}

加上括号就可以啦!

2.&与=

import java.util.Scanner;

public class OddEvenBitBinary {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);

		System.out.print("Please enter an integer > ");
		while(sc.hasNextInt()) {

			int number = sc.nextInt();
			oddEven(number);
			System.out.println();
			System.out.print("Please enter an integer > ");
		}
	}

	public static void oddEven(int num) {

		System.out.print("The odd bit of " + num + " >");

		int j = 1;
		int i = 0;
		for (i = 30; i >= 0; i = i - 2) {

			System.out.print(" " + ((num >> i) & j));
		}

		System.out.println();

		System.out.print("The even bit of " + num + " >");

		for (i = 29; i >= 1; i -= 2) {

			System.out.print(" " + ((num >> i) & j));
		}
	}
}

System.out.print(" " + ((num >> i) & j)); 这一行代码的括号必须全加上,不然会出现报错!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值