Imsvale Skrevet 16. september 2013 Del Skrevet 16. september 2013 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? Fordi rekkefølgen i 8-bit 2k er slik: 01111111 = 127 10000000 = -128 10000001 = -127 Vet ikke om det første tallet er 1 med vilje, eller bare fordi det er delt opp slik. Uansett gjør det at det funker med addisjon og subtraksjon når det er slik, så lenge du holder deg innenfor [-128,127]. Det mest negative tallet i spekteret får lavest binær verdi, og det gir mening. It's magic! Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 Det er litt vrient, men gir mer og mer meining Lenke til kommentar
Gavekort Skrevet 16. september 2013 Del Skrevet 16. september 2013 (endret) For å regne med 2s så er det tre operasjoner du må gjøre med negative tall. Positive tall er lett, for det er bare binært. Negative tall, f.eks -5 må du gjøre en rekke med ting med. Dette høres kanskje mer innviklet ut, men det er en ren prosess som er lett å huske. For å finne -5 i 8-bit 2s så representerer du først 5 i binært: Absoluttverdi i binær: 0000 0101 (5 dec) Flipp (NOT-operasjon): 1111 1010 Legg til binær 1: 1111 1011 For -127: Absoluttverdi i binær: 0111 1111 (127 dec) Flipp (NOT) 1000 0000 Legg til binær 1: 1000 0001 For 67: Verdi i binær: 0100 0011 Mer trenger du ikke å gjøre om det er positivt Endret 16. september 2013 av Gavekort 1 Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 What? Flipp, og +1? Haha for en fantastisk måte å gjøre det på Lenke til kommentar
Gavekort Skrevet 16. september 2013 Del Skrevet 16. september 2013 (endret) Og om du vil regne tilbake: F.eks 1000 0001 Så utfører du samme operasjonen: 1000 0001 (-127) Flipp 0111 1110 Legg til binær 1: 0111 1111 0111 1111 i binær er 127 i desimal-verdi Bare her må du huske at du hadde et sign bit på 1, så pass på at 0111 1111 som resultat ikke betyr 127, men -127. Endret 16. september 2013 av Gavekort Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 What? Jeg var med helt til den siste setningen. Hva mener du? Lenke til kommentar
Imsvale Skrevet 16. september 2013 Del Skrevet 16. september 2013 What? Flipp, og +1? Haha for en fantastisk måte å gjøre det på Og med 1-kompliment så flipper du bare. Lenke til kommentar
Gavekort Skrevet 16. september 2013 Del Skrevet 16. september 2013 Du hadde 1000 0001 som utgangspunkt, det var dette du ville konvertere tilbake til base-10. Med en gang du flipper 1000 0001 så forsvinner sign-bittet. Om du ikke er våken og du konverterer 1000 0001 til 0111 1111 så vil du fort tro at dette er et positivt tall siden sign er 0. Henger du med? Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 Men snur vi ikke om for å få et positivt tall da? Er det ikke derfor tallet begynner på 0, fordi det er positivt? Hvorfor ellers ville vi konvertert 1000 0001 til 0111 1111? Vi ville ha det positive tallet av et negativt tall. Jeg datt seriøst helt bort jeg nå Lenke til kommentar
Imsvale Skrevet 16. september 2013 Del Skrevet 16. september 2013 Om du ikke er våken og du konverterer 1000 0001 til 0111 1111 så vil du fort tro at dette er et positivt tall siden sign er 0. Wut? 1000 0001 er -127 og 0111 1111 er jo 127. Er det noe jeg ikke har fått med meg? Lenke til kommentar
Gavekort Skrevet 16. september 2013 Del Skrevet 16. september 2013 (endret) Men snur vi ikke om for å få et positivt tall da? Er det ikke derfor tallet begynner på 0, fordi det er positivt? Hvorfor ellers ville vi konvertert 1000 0001 til 0111 1111? Vi ville ha det positive tallet av et negativt tall. Jeg datt seriøst helt bort jeg nå Nei. Det er bare positivt i konverteringsprosessen. La oss ta et til eksempel: 1111 1011 - Dette er et negativt tall, det skal være -5 Du flipper det: 0000 0100 (Nå ble dette positivt, men det er bare fordi vi konverterer) Så legger du til binær 1: 0000 0101 0000 0101 er 5 i binær, men så konverterte vi det fra 2s med et negativt sign-bit, så du må huske på at dette fortsatt skal være negativt. Så bare husk å konvertere resultatet til negativt, altså -5. En gang til: 1111 1011 flip: 0000 0100 add 1: 0000 0101 0000 0101 = 5 Gjør negativt: -5 Dette gjelder kun når du konverterer tilbake til base 10. Om du forstod base 2 konverteringen, så er ikke det noe mer hokus pokus enn det du forstod. Jeg sier dette her fordi jeg har dritet på leggen min med denne tilbake-konverteringen før, og glemt at sign-bit forsvinner i konverteringen. Endret 16. september 2013 av Gavekort Lenke til kommentar
Gavekort Skrevet 16. september 2013 Del Skrevet 16. september 2013 Wut? 1000 0001 er -127 og 0111 1111 er jo 127. Er det noe jeg ikke har fått med meg? Du flipper og legger til 1. Kan være jeg som forklarer ting dårlig. Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 Jeg forstår ikke hva du mener med at etter at du har konvertert til et positivt tall, så er det fortsatt et negativt tall. Hvorfor skal tallet fortsatt være negativt? Jeg har ikke vært borti det her så mye Lenke til kommentar
Gavekort Skrevet 16. september 2013 Del Skrevet 16. september 2013 (endret) Jeg forstår ikke hva du mener med at etter at du har konvertert til et positivt tall, så er det fortsatt et negativt tall. Hvorfor skal tallet fortsatt være negativt? Jeg har ikke vært borti det her så mye Fordi du i utgangspunktet hadde et negativt tall. 1111 1011 er -5 Du ser sign-bittet? Det er et negativt tall, men du så at resultatet ble et positivt tall (5)? Det skal ikke være positivt siden MSB (bittet helt til venstre) er 1, som indikerer et negativt tall. Endret 16. september 2013 av Gavekort Lenke til kommentar
Imsvale Skrevet 16. september 2013 Del Skrevet 16. september 2013 (endret) Fordi du i utgangspunktet hadde et negativt tall. 1111 1011 er -5 Du ser sign-bittet? Det er et negativt tall, men du så at resultatet ble et positivt tall (5)? Det skal ikke være positivt siden MSB (bittet helt til høyre) er 1, som indikerer et negativt tall. Men hensikten er jo nettopp å konvertere fra negativt til positivt (eller vice versa), bare på binærform. Jeg forstår ennå ikke hva du mener. Endret 16. september 2013 av Imsvale Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 Mener du at jeg ikke må glemme hva det originale tallet var? Lenke til kommentar
Gavekort Skrevet 16. september 2013 Del Skrevet 16. september 2013 (endret) Men hensikten er jo nettopp å konvertere fra negativt til positivt (eller vice versa), bare på binærform. Jeg forstår ennå ikke hva du mener. Hensikten er å konvertere tallet fra binært til desimal. Om du vil vite hva det dreier seg om så kan du prøve å konvertere 1010 0111 og se om du møter på noen problemer. Se på det som en hjemmelekse. Mener du at jeg ikke må glemme hva det originale tallet var? Jess! For du vil alltid ende opp med et positivt tall etter du har konvertert, men det er aldri positivt, for positive tall trenger ikke flipping og adding Endret 16. september 2013 av Gavekort Lenke til kommentar
Manlulu Skrevet 16. september 2013 Forfatter Del Skrevet 16. september 2013 (endret) Emm jeg får -168 når jeg prøver å konvertere tallet ditt som er 167. (Om jeg ikke er helt på tur). Du har pusha meg så far out du nå Et øyeblikk så trodde jeg at jeg kunne dette.. så feil kan man ta.. Edit: Glem det jeg sa. Jeg skal få det til. Edit 2: huff nei får det ikke til. Du har ødelagt selvtilliten min når det kommer til binærtall Endret 16. september 2013 av Manlulu Lenke til kommentar
Gavekort Skrevet 16. september 2013 Del Skrevet 16. september 2013 1010 0111 flipp: 0101 1000 add: 0101 1001 0101 1001 = 89 Svaret er -89 Bare fortsett å spør om du lurer på noe. Jeg er ikke utålmodig. Lenke til kommentar
Imsvale Skrevet 16. september 2013 Del Skrevet 16. september 2013 Hensikten er å konvertere tallet fra binært til desimal. Du må nesten forklare dette ut fra tabellen for 2-kompliment her: http://en.wikipedia.org/wiki/Signed_number_representation#Two.27s_complement På hvilken måte er det ikke tilfellet at vi konverterer 127 til -127? Det er jo hele vitsen. Om du vil vite hva det dreier seg om så kan du prøve å konvertere 1010 0111 og se om du møter på noen problemer. Se på det som en hjemmelekse. Konvertere: 1010 0111 (= -89 i 8-bit 2-kompliment). Flipp: 0101 1000 +1: 0101 1001 = 89 Hvor skulle problemet oppstått, mener du? Og hva er feil? 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å