Si tengo una notación binaria como "1000010", que es igual a 66 y quiero incrementarlo en uno de "1000011", que es igual a 67. ¿Cómo se hace eso correctamente en mi matriz? Actualmente está imprimiendo "0100010" que es 34, pero no está cerca de la respuesta correcta. No creo que mi matriz esté cambiando correctamente, ni aumentará el tamaño a medida que los números aumentan. Sin embargo, no puedo hacer ninguna suposición sobre qué tan grande puede ser la matriz más allá de lo que se establece explícitamente.¿Cómo incrementar los bits correctamente en una matriz?
public class math {
//=================================================================
// increment(A) returns an array of bits representing A+1.
//=================================================================
public static byte[] increment(byte[] A)
{
byte carry= 1;
for(int i = 0; i<A.length; i++){
byte b = A[i];
A [i] ^= carry;
carry &= b;
}
return A;
}
private static String toBinString (byte [] a)
{
String res = "";
for (int i = 0; i <a. length; i++)
{
res = (a [i] == 0 ? "0": "1") + res;
}
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
byte [] A ={1,0,0,0,0,1,0};
increment(A);
System.out.println (toBinString (A));
}
}
relacionados: http://stackoverflow.com/questions/1034473/java-iterate-bits- en-matriz de bytes –
en su declaración de a parece que quiere más a la izquierda (primera) serie sea el bit más significativo, en el resto del programa se tiene en cuenta el primer elemento de la matriz como el bit menos significativo. La solución más fácil sería ingresar su número en orden inverso en la matriz, o invertir la matriz ... – fvu
Esta solución funcionó para mí: https://stackoverflow.com/questions/4421400/how-to-get-0- padded-binary-representation-of-a-integer-in-java – HoldOffHunger