Por ejemplo, he el número binario 1011 que es igual a decimal 11. Quiero la ubicación del bit inverso de tal manera que se convierta en 1101, que es decimal 13. Aquí es código:los bits inversa en número
import java.util.*;
public class bits {
public static void main(String[] args) {
Scanner scnr=new Scanner(System.in);
System.out.println("enter x:");
int x=scnr.nextInt();
int b=0;
while (x!=0){
b|=(x &1);
x>>=1;
b<<=1;
}
System.out.println(b);
}
}
Pero cuando ingreso x 11, imprime 26. ¿Cuál es el error?
un entero completo se puede invertir con 'Integer.reverse (int i)' - pero como parece que quieres invertir enteros con menos bits, lo dejo como un comentario. –
parece que la solución ya está aquí: http://stackoverflow.com/questions/746171/best-algorithm-for-bit-reversal-from-msb-lsb-to-lsb-msb-in-c Estás falta que debe haber un cambio adicional necesario al final – AndrewB