För att representera ett positivt heltal måste vi konvertera binärt till decimaltal. Det gör vi genom att multiplicera den i:e biten med 2i. Så den längst till höger liggande biten multipliceras med 20 eller 1, den näst längst till höger liggande med 21 eller 2 och den tredje längst till höger liggande biten med 22 eller 4 och så vidare.

Så 1010 binärt är: 1*23+ 0*22+1*21+0*20 = 8+0+2+0 = 10 decimaltal

Ett annat sätt att uttrycka det på: Vi börjar från den högraste biten och går till vänster och tilldelar varje bit som är 1 1,2,4,8,16,32, etc.
Vi kan också ta ett binärt tal och omvandla det till binärt. Ett sätt att göra detta är att skriva ut bas-10-värdena för varje bit tills du hittar ett som är större än det tal du försöker konvertera. Så för bas-10 talet 155 skulle vi skriva ut värdena som motsvarar :
värde: 256 128 64 32 16 8 4 4 2 1
För att få 155 kan vi inte ha 256 bitar inställda, men vi kan ha en 128, så vi sätter en ”1” där.
värde: 256 128 64 32 16 16 8 4 4 2 1
0 1
Vi behöver fortfarande 155-128=27. 64 och 32 är för stora, så vi placerar 0:or där och sätter en 1 på 16:
värde: 256 128 64 32 16 8 4 2 1
0 1 0 0 0 1
Vi behöver fortfarande 155-128-16=11. Så vi ger en 1 till siffran med 8-värde. Vi behöver fortfarande 3 till, så vi sätter en 0 i 4-värdet och 1:or i 2-värdet och 1-värdet. Detta ger oss det binära talet:
värde: 256 128 64 32 16 8 8 4 2 1
0 1 0 0 0 0 1 1 0 1 1
Så 155 decimaltal är lika med 010011011 binärt.
Integertal tilldelas i allmänhet 4 byte (32 bitar) eller på 64-bitarsdatorer ofta 8 byte.
Det flytande talet representeras på samma sätt som integral tal, men vissa bitar är reserverade för den bråkdel av talet. Av denna anledning tilldelas i allmänhet fler bitar till flyttal (t.ex. 64 i stället för 32).
Exempel: Låt oss säga att vi skulle representera ett floattal med 6 bitar, varav de 2 längst till höger är bråkdelen. Vad skulle då vara värdet av:
101010?

Tecken och strängar

Varje symbol på tangentbordet – bokstäver, siffror etc. – representeras internt i en dators minne med ett nummer. Vi kallar dessa tecken.
Mappningarna mellan siffror och symboler definieras i ASCII-tabellen: http://www.lookuptables.com/.
Mappningstabellen kallades ASCII-tabellen, eller ASCII-koden. Med ASCII representerades varje symbol med ett tal mellan 0 och 255 (fråga: hur många bitar behövs för att lagra ett sådant tal?)
För att inte vara engelskcentrerade använder moderna datasystem nu Unicode, som kan representera många olika språk och kräver ytterligare bitar för att representera varje symbol. Men för engelska symboler kan ASCII-tabellen fortfarande användas för att söka upp värdet för varje symbol.

En sträng är en sekvens av tecken, t.ex. ”dog”. Internt lagrar vi Unicode-numret för varje tecken och ett särskilt tecken för slutet av strängen. Så ordet ”hund” är egentligen unicode-numret för ”d”, unicode-numret för ”o” och unicode-tecknet för ”g”, och slutligen sluttecknet för strängens slut som är ”\0”. ”d” är 100 decimaltal i ASCII-tabellen, så ”hund” representeras av följande decimaltal (lagrade i 16 bitar vardera):
100 111 103 103 0
Tal lagras i allmänhet som heltal, som förklaras ovan. Men när vi får in data från användaren eller visar värden måste vi hantera tal som representeras som en sekvens av siffror. Precis som med bokstäver är siffror tecken. Siffran ”0” är Unicode-nummer 48 och ”9” är Unicode-nummer 57. Strängen ”724” lagras internt som: 55 50 52 52 0

Arbetsblad

1. Betrakta följande sexton bitar:

0000 0000 0100 1101

a. Vilket värde har talet om det representerar ett positivt heltal (heltal)?
b. Om bitsträngen representerar en symbol, vilken symbol är det då? Du kan använda ascii-uppslagstabellen http://www.lookuptables.com/

2. Datorer brukade ha 64 K minne. Vad är K? Är det ett runt tal? Varför arbetar datavetare inte med fina runda tal som 1000?
3. Vad är en megabyte? En gigabyte? Vad är tusen gigabyte? En miljon gigabyte?
4. Visa hur följande tre bas-10-tal skulle representeras i binär form.

24 1025 43

5. Visa hur ”katt” representeras i bitar?
6. Hur många möjliga tecken kan representeras med unicode (16 bitar)?
7. Vilket är det största heltal som kan representeras med fyra byte, om vi bara tar hänsyn till positiva tal?
8. Om vi också tar hänsyn till negativa tal, vilket är då det största heltal som kan representeras med fyra byte ? Hur tror du att negativa tal representeras?
9. Skriv en pythonfunktion som tar en sträng med siffror som parameter och returnerar ett heltal som är bas-10-värdet av dessa siffror, t.ex. om parametern är ”723” returnerar funktionen heltalet 723 (Ja, jag vet, Python har en int-funktion – du skriver den här).
10. Skriv en pythonfunktion som tar en sträng av base-10-siffror som parameter och returnerar en sträng av base-2-siffror så att base-2-siffrorna är det konverterade värdet av de ursprungliga base-10-siffrorna. Om till exempel ”11” skickades in skulle funktionen återge ”1011”.
Arbeta ut ovanstående frågor med penna och papper. När du är klar kan du kontrollera dina svar på binär konvertering här: http://mistupid.com/computers/binaryconv.htm
Hjälp till binär konvertering:

Binära tal från CSUNPLUGGED

Binära tal på 60 sekunder

Lämna en kommentar

Din e-postadress kommer inte publiceras.