rrmagne Skrevet 4. april 2005 Del Skrevet 4. april 2005 Hei. Jeg holder for tiden på å lese til CCNA og fatter ikke helt det binære tallsystemet. Lurte derfor på om noen hadde bry til å lage en liten guide som dekker de viktigste områdene? Vennlig hilsen Roy Lenke til kommentar
pgdx Skrevet 4. april 2005 Del Skrevet 4. april 2005 (endret) http://www.linuxguiden.no/index.php/Bin%C3%A6r http://en.wikipedia.org/wiki/Binary_numeral_system Du kan si det slik at der vi i vært desimalsystem teller fra 0-9, teller binært fra 0 til 1. Derfor blir det slik: 0 -0 1 - 1 2 - 10 3 - 11 4 - 100 5 - 101 6 - 110 7 - 111 8 - 1000 9 - 1001 Endret 4. april 2005 av drange_net Lenke til kommentar
Leoric Skrevet 4. april 2005 Del Skrevet 4. april 2005 Når du teller vanlig så bruker du tallene 1-9. For å kunne telle lenger enn til 9, så bruker vi en null hver gang vi ikke kan telle lenger. 0 - 1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 - (..) - 99 - 100 - 101 Samme med binært, men her her har du bare to tall, 0 og 1 0 - 1 - 10 - 11 - 100 - 101 - 110 - 111 - 1000 Det blir det samme som 0 -1 -2 -3 -4 -5 -6 -7 -8 Det er det grunnleggende. Masse informasjon på Wikipedia Lenke til kommentar
356speedster Skrevet 4. april 2005 Del Skrevet 4. april 2005 Her er et artig verktøy som oversetter tekst <--> binært encodes and decodes 8-bit ASCII text Lenke til kommentar
Goophy Skrevet 4. april 2005 Del Skrevet 4. april 2005 Den "oversetteren" blir vel ikke korrekt mht. til tall? Siden den er 8-bit ASCII tenker jeg på... Hvis du ser litt på de lenkene postet ovenfor og setter deg ned og teller litt på fingrene med 1 og 0 kommer du fort inn i det, er ikke fullt så vrient som det først kan se ut som. Lenke til kommentar
Torbjørn Skrevet 4. april 2005 Del Skrevet 4. april 2005 alle siffer er definert i 8 bits ascii, så det burde gå fint: perl -le 'printf qq{"%d": asciikode: %d\n},$_,ord for 0..9' Lenke til kommentar
Goophy Skrevet 4. april 2005 Del Skrevet 4. april 2005 Joda, men du ender opp med 7 1 og 0 mer enn nødvendig om du feks. skal "oversette" "1". Lenke til kommentar
Torbjørn Skrevet 4. april 2005 Del Skrevet 4. april 2005 (endret) her må du holde tunga i rett munn "1" er et tegn, akkurat som "A" eller "ô" eller "ı" det som ser ut som et tall "10100", er en streng satt sammen av 5 tegn, og beskrives således med 5 bytes (5 8 bits asciikoder, avhengig av tegnsett selvsagt) Det finnes (naturlig nok) ingen automatikk i å pusle sammen flere bytes til større tall enn hva 8 bit kan håndtere. Dette må isåfall være kjent for den om lager datainnholdet og for den som skal tolke det i etterkant. Hvis du åpner en txt fil og ser det som ser ut som et tall der, f.eks "10100", så er det fordi fila inneholder 5 bytes, som utfra 8 bits ascii, danner de 5 tegnene som ser ut til å kunne være et gyldig binært tall. Dette er fordi teksteditoren tolker alle bytes som strenger. Noe annet ville være ulogisk. Diverse binærfiler pakker sammen tall i flere bytes. tallet 12398372, som representert som tekst er på 8 tegn, (og følgelig 8 bytes) - kan pakkes sammen til en 4 bytes integer istedet, hvor da de 4 bytene til sammen numerisk utgjør tallet som er vist. De 8 tegnene ser slik ut som filinnhold: perl -le 'print unpack "B*", 12398372' Her er det 8 bits per tegn i teksten "12398372" slik blir det binært (pakket som en integer på 4 bytes): perl -le 'print unpack "B*",pack "I", 12398372' Her er det totalt 32 bits (4 bytes) som tilsammen beskriver tallet 12398372 binært. Hver byte i seg selv vil ikke gi særlig mening, men hvis du på forhånd vet at 4 bytes skal settes sammen til en integer, kan du hente ut tallet. perl -e 'do {print $_,": ",(pack "B8",$_),"\n"} for (unpack "B*",pack "I", 12398372) =~ /.{8}/g' Der ser du hvordan hver av de 4 bytene ser ut hver for seg. Det er av samme grunn det ikke gir mening å åpne binærfiler fra ymse programmer. EDIT: det er opp til den oppegående forumleser å selv kjøre perlkodesnuttene for å se hva resultatet blir Endret 4. april 2005 av Torbjørn Lenke til kommentar
mysjkin Skrevet 4. april 2005 Del Skrevet 4. april 2005 (endret) Hvis du ser litt på de lenkene postet ovenfor og setter deg ned og teller litt på fingrene med 1 og 0 kommer du fort inn i det, er ikke fullt så vrient som det først kan se ut som Ekte datafolk kan telle til 1023 på fingrene... (men vær forsiktig med å bestille 4 av noe...) @rrmagne: Her har det blitt dratt inn binært på to nivåer. Tallsystemet (som jeg antar at var det du spurte om) (jf drange_nets første svar) og koding av andre ting ( bokstaver ) i tall som kan være på binært eller andre systemer. (Og tallet 13 (fx) kan da enten kodes som 1101, eller som tegnene 1 og 3 som får hver sin kode)) Hvis du vil lære det binære tallsystemet, må du glemme alt om koding av tegn i første omgang, det bare forvirrer. Goofy er smart, tell på fingrene, hver finger er en bit og du får på en hånd: (. bøyd finger, | rett finger) ....| ...|. ...|| ..|.. ..|.| ..||. ..||| .|... etc. Håper dette ikke forvirret mer... (Det var den typen fingertelling som gav meg ahaopplevelse med binære tall en gang, etter det har alle tallsystemer vært like greie, bare jeg passer på å fjerne eller legge til noen ekstra fingre..) M. Endret 4. april 2005 av mysjkin Lenke til kommentar
magikern Skrevet 4. april 2005 Del Skrevet 4. april 2005 (endret) noen tanker rundt binærtall: (bruk "b"=binær, "d"=decimal) 1b = 1*2^0=1d 10b = 0*(2^0)+1(*2^1)=2d 111b =1*(2^0)+1*(2^1)+1*(2^2)=7d 10101010b= 0*1 +1*2 +0*4 +1*8 +0*16 +1*32 +0*64 +1*128 =170d andre veien: starter med 70d 70-64=6 6-4=2 2-2=0 altså får vi: 1000110b Endret 4. april 2005 av magikern Lenke til kommentar
Tr1llobite Skrevet 4. april 2005 Del Skrevet 4. april 2005 Jeg er flink å telle binary på fingrene :!: 0... 1.... 10.... 11.... 100.... Hulemannen var dum som talte til ti når han kunne talt til 1024 Lenke til kommentar
Steinbitglis Skrevet 5. april 2005 Del Skrevet 5. april 2005 (endret) Og så drar vi inn det hexadecimale tallsystemet for å skape full forvirring 0x10 = 16d Endret 5. april 2005 av Styggentorsken Lenke til kommentar
ways Skrevet 5. april 2005 Del Skrevet 5. april 2005 om du liker bash, så er dette en veldig enkel måte å konvertere på: echo $((2#10011)) 19 så kan man også bytte 2-tallet for å få andre tallsystem. 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å