nomore Skrevet 22. august 2010 Skrevet 22. august 2010 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?
NevroMance Skrevet 22. august 2010 Skrevet 22. august 2010 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.
nomore Skrevet 22. august 2010 Forfatter Skrevet 22. august 2010 Tenkte meg noe slikt. Ulempen er at eg da ikke kan bruke de fire første bits til et tall.
NevroMance Skrevet 22. august 2010 Skrevet 22. august 2010 Det vil jo komme ann på rangen din. Det positive er jo at 123 og -123 har så og si samme binære representasjon.
nomore Skrevet 22. august 2010 Forfatter Skrevet 22. august 2010 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
asicman Skrevet 23. august 2010 Skrevet 23. august 2010 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.
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå