Gå til innhold

Negative verdier med binary kodet desimaltall(BCD)?


Anbefalte innlegg

Hei,

 

Eg holder på med en kode(i processing) som konverterer et tall til binært kodet desimaltall. Dvs at om eg har verdien 129,5 så får eg resultatet 00010010 10010101 i to byte(hvert siffer får 4 bit). Verdiene eg skal konvertere kan gå i fra -99.9 til 999.9. Men hvordan lagrer eg infoen om at det er et minustall?

 

Siden eg kun har fire bit tilgjengelig pr tall og hver av disse brukes til å forme et tall fra 0-9 så ble eg litt usikker. Å bruke 4 bit av en byte til er uaktuelt pga buffer størrelser og overføringskapasitet.

 

Det eg da lurte på var å for eks å bruke de fire siste bitene i byte 1(helt til venstre) og sette disse til for eks 1010(=10, og 10 er ikke et tall som skal være representert av fire bit). Dette bør gå, men er dette en grei måte å gjøre det på? Hvordan gjøres dette ellers rundtom?

Lenke til kommentar
Videoannonse
Annonse

I utgangspunktet så hadde eg planer om å sette grensen ved 999.9. Og for å representere 9 så trenger eg jo den siste og første biten(i en halv byte). Da vil eg ikke kunne bruke den første biten til å indikere minus eller positivt.

 

Men eg ser eg kan fint begrense maks verdi på det første tallet til 7, så da løser det problemet :)

Lenke til kommentar

Den vanlige måten å gjøre det på er å sette første bittet til 0 eller 1, altså en bit som kun sier om det er positivt eller negativt tall.

 

Ulempen med det er man får to representasjoner for 0. Men det er ikke sikkert det er noe problem i din applikasjon.

 

Nå vet jeg ikke hva du forsøker å gjøre, men det virker som du har lite plass/båndbredde, hvorfor ikke bruke vanlig to-komplement binær representasjon? Du kan representere 999,9 som 9999 og bare ha med komma i input og output.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...