Cześć, napisałem program zamieniający z liczby binarnej na szesnastkową, jednak wymagana jest zamiana z U2 tak aby zakres był od 0-255;
Obecnie program działa na zakresie od -128-127.
Ma to działać mniej więcej tak:
Użytkownik podaje binarną liczbę ujemną np. -159 (01100001), ta liczba zostaje zamieniona najpierw na dodatnią poprzez odjęcie bitu (czyli po dodaniu 8 jedynek) oraz po negacji tej liczby. Otrzymujemy dodatnie 159 co jest ostatecznie zamieniane na liczbę 16kową (z systemu dziesiętnego).
Gdy poda binarną dodatnią, to od razu zamieniamy na 16kowy.
Największą możliwą liczbą w takim przypadku może być 255 (najmniejszą -255, bo i tak zostaje zamieniona na dodatnią).
I teraz pytanie.. Jak mogę sprawdzić, czy podana liczba binarna z zakresu -255 do 255 jest dodatnia, czy ujemna?
Niby 1 bit oznacza znak i gdy będzie 1, to liczba jest ujemna, ale to nie będzie się zgadzało dla każdej liczby.
Np. 159(10)=10011111(2), a -159(10)=01100001(2)
Jest na to jakiś sposób, czy jest to raczej niewykonalne?