Если у меня есть двоичная нотация, такая как "1000010", которая равна 66, и я хочу увеличить ее на единицу до "1000011", что равно 67. Как это сделано правильно в моем массиве? В настоящее время он распечатывает "0100010", который составляет 34, но не где рядом с правильным ответом. Я не думаю, что мой массив смещается правильно, и он не увеличит размер по мере увеличения числа. Хотя, я не могу делать никаких предположений о том, насколько большой может быть массив, чем явно указано.
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));
}
}