Gå til innhold
Trenger du skole- eller leksehjelp? Still spørsmål her ×

Rekne med binær, hex osv


Anbefalte innlegg

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
Videoannonse
Annonse

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 av Gavekort
  • Liker 1
Lenke til kommentar

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 av Gavekort
Lenke til kommentar

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

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

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 av Gavekort
Lenke til kommentar

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 av Gavekort
Lenke til kommentar

 

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 av Imsvale
Lenke til kommentar

 

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. :p

 

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 av Gavekort
Lenke til kommentar

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å :tease: 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 :hrm:

Endret av Manlulu
Lenke til kommentar

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. :p

 

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

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å
×
×
  • Opprett ny...