Jeśli mam notację binarną, taką jak "1000010", która wynosi 66 i chcę ją zwiększyć o jeden do "1000011", co równa się 67. Jak to zrobić poprawnie w mojej tablicy? Obecnie drukuje "0100010", czyli 34, ale nie w pobliżu właściwej odpowiedzi. Nie sądzę, aby moja tablica poprawnie się przesuwała, ani nie zwiększy rozmiaru, gdy liczby będą większe. Chociaż nie mogę założyć, że duża tablica może być inna niż to, co zostało wyraźnie powiedziane.Jak poprawnie zwiększyć bity w tablicy?
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));
}
}
związane: http://stackoverflow.com/questions/1034473/java-iterate-bits- tablica in-byte –
W twojej deklaracji A wygląda na to, że chcesz, aby najdalsza z lewej (pierwsza) tablica była najbardziej znaczącym bitem, w pozostałej części twojego programu uważany jest pierwszy element tablicy za najmniej znaczący bit. Najprostszym rozwiązaniem byłoby prawdopodobnie wprowadzenie numeru w odwrotnej kolejności w tablicy lub odwrócenie tablicy ... – fvu
To rozwiązanie sprawdziło się dla mnie: https://stackoverflow.com/questions/4421400/how-to-get-0- wyściełana-binarna-reprezentacja-liczby-w-java – HoldOffHunger