Exam08_ChangeBit (Java)

descripción

Dados dos números enteros A y B, es necesario cambiar algunos bits de la A a B.

entrada

Línea 1: A y B, y separados por espacios

exportación

El número de bits necesario para cambiar

entrada de la muestra

10 8

Ejemplo de salida

1

mi código

método uno

		Scanner sc = new Scanner(System.in);
		int A = sc.nextInt();
		int B = sc.nextInt();
		String sA = Integer.toString(A,2);
		//记录一下A转换成二进制的位数
		int len = sA.length();
		//指向第几位
		int index = 0;
		int cnt = 0;
		while (true) {
			//如果指向A的第一位和指向B的第一位不一样,就累加
			if ((A&(1<<index)) != (B&(1<<index))) {
				cnt++;
			}
			//指向下一位
			index++;
			//当超过了A的进制位数,就跳出
			if (index > len) {
				break;
			}
		}
		System.out.println(cnt);

Segundo método

import java.util.Scanner;

public class Exam08_ChangeBit {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//answer1();
		
		Scanner sc = new Scanner(System.in);
	    int A = sc.nextInt();
	    int B = sc.nextInt();
	    //先异或,如果二者相应位不一致,就转为1
	    System.out.println(clearOne(A^B));
		
	}
	
	private static int clearOne(int x) {
	    int count=0;
	    while(x!=0){
	    	//x-1表示将低位上的1变成0,后面的变成1
	    	//将-1后的结果与原来的数做&运算,那么,后面的部分就全部被变成0(干掉)
	    	//例如10100 减去1 ,变成 10011,10011&10100 就变成100000,这样就消掉最低位的1
	      x = (x-1)&x;
	      //就看消掉几个1,进行累加
	      count++;
	    }
	    return count;
	  }
}
Publicado 60 artículos originales · ganado elogios 4 · Vistas 1291

Supongo que te gusta

Origin blog.csdn.net/qq_43966129/article/details/104941797
Recomendado
Clasificación