Witam, uczę się Pascala i cały czas myślę nad znalezieniem odpowiedniego algorytmu do wyznaczenia najkrótszego, możliwego kodu U2 liczby całkowitej od -128 do 127. Do czasu kiedy robiłem to na 8 bitach, było w miarę łatwo, teraz jednak pojawiły się problemy ;). Oto przykłady: 12 (dec) = 01100 (U2), -11 (dec) = 10101 (U2), 1 (dec) = 01 (U2)
Jeśli się nie mylę, 1 (dec) na ośmiu bitach wygląda tak: 00000001, a -11 (dec) -> 11110101.
Nie wiem jak zapisujesz te liczby, ale jeśli w tabeli, to możesz jechać od lewej do prawej i zależnie od pierwszego znaku szukać pierwszego innego:
przykład dla -11:
B[1]:=A[1]; {pierwszy przepisujesz A=11110101, B=1}
for i:=2 to 8 do
if A[i]<>A[1] then begin a:=i; break; end; {dopóki są takie same to nic, gdy są inne zapisuje od którego się różnią}
for i:=a to 8 do B[i]:=A[i] {przepisuje pozostałe znaki A=11110101, B=10101}
Tak, ale teraz chodzi mi o wersję najkrótszą, nie ośmiobitową
No i właśnie w tablicy B będzie zapisana najkrótsza wersja.