Manlulu Skrevet 4. september 2013 Del Skrevet 4. september 2013 Jeg har en oppgave. Å regne fra binær til hex går av og til greit. Jeg gjør om binærtall talla til 10tall systemet, og finner hextallet i en ASCII liste jeg fann på nettet. Men som jeg har forstått så går den ikke lenger opp enn til 127. Hva gjør jeg når jeg skal rekne binærtall som er større enn 127 om til hexadesimaler? Eksempel: 1111 1111 = 255. Hvordan gjør jeg denne om til hexadesimaler? Det blir vel værre å skulle rekne fra hex til binær?Eksempel: 0x7D. Er det vanlig å rekne den veien, eller er det helst kun fra binær til hexadesimaler? Lenke til kommentar
j-- Skrevet 4. september 2013 Del Skrevet 4. september 2013 bin til hex: 0000 = 0 0001 = 1 0010 = 2 0011 = 3 0100 = 4 0101 = 4 0110 = 6 0111 = 7 1000 = 8 1001 = 9 1010 = A 1011 = B 1100 = C 1101 = D 1110 = E 1111 = F Ut fra dette ser du at 1111 1111 = 0xFF Eksempel: 0xDEADBEEF = 1101 1110 1010 1101 1011 1110 1110 1111 1 Lenke til kommentar
Manlulu Skrevet 4. september 2013 Forfatter Del Skrevet 4. september 2013 Jeg fann det ut. Når man har 8 bits, så skal man regne 4 og 4 bits for seg selv, og så legge sammen når man skriver det som hexadesimaler. Takk for svar Lenke til kommentar
Djn Skrevet 4. september 2013 Del Skrevet 4. september 2013 (endret) Det hjelper om du husker at ett hex-siffer er fire bit. Listen over er forsåvidt det du trenger, men du kan fort gjøre det i hodet for småting. Fra hex til binært, f.eks. 0x7D : 0x7 = 7 = 4+2+1, så 0111b . 0xD = 13 = 8+4+1 = 1101b . Slå de sammen, og du får 01111101b . Andre veien blir mye det samme. For 11100101b : 1110b = 8+4+2 = 14 = 0xE 0101b = 4+1 = 5 = 0x5 Altså 0xE5. edit: Akkurat. Endret 4. september 2013 av Djn Lenke til kommentar
Manlulu Skrevet 4. september 2013 Forfatter Del Skrevet 4. september 2013 Awesome! Takker Lenke til kommentar
Manlulu Skrevet 4. september 2013 Forfatter Del Skrevet 4. september 2013 (endret) Sjekk her. 0x80 0x97 0x00 0x3A 0x7F Her er de sortert fra venstre til høyre. Minst til størst. Hvordan kan jeg vite at 0x80 og 0x97 er negative tall? 0x00 er jo 0. Edit: fra top til bunn, minst til størst vart det visst. Endret 4. september 2013 av Manlulu Lenke til kommentar
Manlulu Skrevet 4. september 2013 Forfatter Del Skrevet 4. september 2013 Hva betyr det når det står AND mellom 2 hexadesimaler? Lenke til kommentar
Djn Skrevet 4. september 2013 Del Skrevet 4. september 2013 (endret) AND betyr (antageligvis, det er litt ettersom sammenheng og språk) en bitwise and: Skriv de to tallene ut som binærtall over hverandre. Der begge to er 1 blir "summen" 1, alt annet blir 0. 0011 AND 0101 = 0001 Du kan sammenligne med OR (1 hvis a eller b eller begge): 0011 OR 0101 = 0111 og XOR (1 hvis a eller b men ikke begge er 1): 0011 XOR 0101 = 0110 Negative tall er ... uh. Det er egentlig ikke "innebygd" i hex i seg selv - rent matematisk fungerer de akkurat som andre tall. Derimot er det noen mer tekniske/praktiske måter å lagre og regne med negative tall i prosessorer, og det er antageligvis en av de det er meningen du skal vite om. Den vanligste er two's complement, så jeg antar det er det de mener her. Du kan se om et tall er negativt ved å se på den største biten: Hvis den er 0 er tallet positivt, hvis den er 1 er tallet negativt. 0x80 = 1000 0000b , altså negativt. Du kan forsåvidt se på wikipedia-siden for å se hvordan du konverterer mellom positive og negative tall, og hvordan det brukes - de praktiske eksemplene der så greie ut. Endret 4. september 2013 av Djn Lenke til kommentar
Manlulu Skrevet 4. september 2013 Forfatter Del Skrevet 4. september 2013 Jeg skal se mer på dette med hex og AND. Det er veldig godt mulig at det er slik som du sier. Jeg håper, for da skjønner jeg det Jeg tror faktisk du er helt spot on med Two's complement. Vi har om toerkomplement på skolen, så det er nåkk helt sikkert dette lærern vil frem til. Takk for utfyllende svar Djn jeg lærer mye av å spørre her inne Lenke til kommentar
Djn Skrevet 4. september 2013 Del Skrevet 4. september 2013 (endret) Alle bitwise-operasjonene er egentlig veldig lette, ja. Sånn kort oppsummert er hele settet: AND: Er begge 1? OR: Er minst en av dem 1? XOR: Er de forskjellige / er akkurat én av dem 1? NAND: Er minst en av dem 0 / er ikke begge 1? og NOT, som flipper om alle bits i et tall (NOT 101 = 010 . Jeg tror tanken er "ikke 1, men ...") A NAND B er forsåvidt det samme som NOT(A AND B), derav navnet. (Or og xor er forskjellen på "du kan ta sjokolade eller lakris [eller begge]" vs "du kan ha på deg bukser eller shorts [men ikke begge]" - "inklusiv eller" vs "ekslusiv eller".) Endret 4. september 2013 av Djn Lenke til kommentar
Manlulu Skrevet 4. september 2013 Forfatter Del Skrevet 4. september 2013 Dette skal undersøkes litt mer, og så er jeg redd for at det siste innlegget ditt går rett i regelboka litt av det forrige og forsåvitt Lenke til kommentar
Manlulu Skrevet 6. september 2013 Forfatter Del Skrevet 6. september 2013 Kanskje et dumt spørsmål når jeg driver på med binærtall osv, men.. Kan noen forklare hva som menes med dette? Binærtallet 0000 0000 har ASCII-kode 0011 0000 Lenke til kommentar
j-- Skrevet 6. september 2013 Del Skrevet 6. september 2013 Sjekk tabellene her: http://no.wikipedia.org/wiki/ASCII binær 0000 0000 = desimal 0. Se hvilken ASCII-kode som skal til for å skrive tallet 0, så ser du det :-) Lenke til kommentar
Manlulu Skrevet 6. september 2013 Forfatter Del Skrevet 6. september 2013 Takker Etter mye om og men så fortstår jeg tror jeg.. men av en eller annen grunn så var den der en skikkelig brainkill Lenke til kommentar
Imsvale Skrevet 6. september 2013 Del Skrevet 6. september 2013 Takker Etter mye om og men så fortstår jeg tror jeg.. men av en eller annen grunn så var den der en skikkelig brainkill Det er forskjell på den binære verdien 0, og sifferet 0 (og de andre sifrene) som «bokstav» (character) i en tekst. Lenke til kommentar
Manlulu Skrevet 6. september 2013 Forfatter Del Skrevet 6. september 2013 Ja det er det som får det til å gå rundt i hode mitt Lenke til kommentar
Twinflower Skrevet 13. september 2013 Del Skrevet 13. september 2013 Sjekk vedlagt. Det er en øving jeg hadde i 2011 hvor alle former for konvertering fra forskjellige tallsystem er med, med eksempler og fremgangsmåte. Tallsystemer.pdf Lenke til kommentar
Djn Skrevet 13. september 2013 Del Skrevet 13. september 2013 (endret) Takker Etter mye om og men så fortstår jeg tror jeg.. men av en eller annen grunn så var den der en skikkelig brainkill Innimellom hjelper det å tenke på hvorfor ting historisk er som de er: For å vise tekst på en skjerm må man bruke en font. En bitmap-font er bare en serie like store bilder, ett per tegn. Hvis det første bildet er 'a', det neste 'b', osv - så kan man lagre 'a' som 0, 'b' som 1, 'c' som 2, osv. For å vise tekst tar man så den rekken med tall og plukker ut de tilsvarende bildene. I tillegg er det kjekt å kunne sende kommandoer, så man setter gjerne av en del tall til å styre. For å sende tekst til en skriver gjelder det samme - man må ha en standard på hvilket tall som er hvilket tegn, og en måte å si ting som "gå ned en linje". Den standarden - som altså dekker både skrivere og skjerm-fonter og forsåvidt alt annet, er et tegnsett. Den eneste måten tegnet 0 kan bli lagret som tallet 0 er hvis det tilfeldigvis er det aller første tegnet i tegnsettet. I ASCII, som er klart vanligst*, har man reservert de laveste tallene til helt andre ting - 0 blir ofte brukt som "teksten slutter her", og 1-31 er diverse kontrolltegn ("overskrift starter", "slutt på felt", "lag en pipelyd", pluss litt vanligere ting som tab, newline og backspace) - det første "vanlige" tegnet er mellomrom på 32. Det finnes forsåvidt andre standarder - IBM har EBCDIC som er moderat sinnsykt - men de har den samme tingen hvor de laveste plassene er kontrolltegn. Rent praktisk er det print-funksjoner (printf, Integer.toString, denslags) som tar seg av å konvertere et tall til en tilsvarende serie med tegn-koder, og parsing-kode (scanf, atoi, Integer.parseInt, osv) som konverterer den andre veien. * I disse dager er unicode veldig utbredt, men det er langt fra tilfeldig at tegn 1-127 i US-ASCII er de samme i UTF-8. Endret 13. september 2013 av Djn Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 Dere svarer virkelig bra her takker! Jeg har et spørsmål til. Dette er kanskje litt.. domt.. men.. Jeg begynner å skjønne toerkomplement. Tror jeg skal klare å regne med toerkomplement osv. Men det er et tall som forvirrer meg. Hvorfor er -127 = 1000 0001 ??? Det første 1 tallet er jo der for å si at det er et negativt tall ikke sant? Så hvorfor er det ikke -1? Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 -128 + 1 !!!! Lenke til kommentar
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å