For at repræsentere et positivt heltal skal vi konvertere binære tal til decimaltal. Det gør vi ved at multiplicere den i’te bit med 2i. Så den bit længst til højre multipliceres med 20 eller 1, den næsthøjeste bit med 21 eller 2, og den tredje bit længst til højre med 22 eller 4 og så videre.

Så 1010 binært er: 1*23+ 0*22+1*21+0*20 = 8+0+2+0 = 10 decimal

En anden måde at sige det på: Vi starter fra den højest højre bit og går til venstre, og tildeler 1,2,4,8,16,32 osv. til hver bit, der er 1.
Vi kan også tage et binært tal og konvertere det til binært. En måde at gøre dette på er at skrive base-10-værdierne for hver bit ud, indtil du finder en, der er større end det tal, du forsøger at konvertere. Så for Base-10-tallet 155 ville vi skrive værdierne svarende til :
værdi: 256 128 64 32 16 8 4 4 2 1
For at få 155 kan vi ikke have 256 bit sat, men vi kan have et 128, så vi sætter et ‘1’ der.
værdi: 256 128 64 32 16 16 8 4 4 2 1
0 1
Vi skal stadig bruge 155-128=27. 64 og 32 er for store, så vi placerer 0’er der og sætter en 1 på 16:
værdi: 256 128 64 32 16 8 4 2 1
0 1 0 0 0 1
Vi har stadig brug for 155-128-16=11. Så vi giver et “1” til det 8-værdige ciffer. Vi har stadig brug for 3 mere, så vi sætter et 0 i 4-værdien, og 1’er i 2-værdien og 1-værdien. Dette giver os det binære tal:
værdi: 256 128 64 32 16 8 8 4 2 1
0 1 0 0 0 0 1 1 1 0 1 1
Så 155 decimal er lig med 010011011 binært.
Integertal tildeles generelt 4 bytes (32 bit) eller på 64-bit computere ofte 8 bytes.
Repræsentation af floats
Floating point tal repræsenteres på samme måde som hele tal, men nogle bit er reserveret til den brøkdel af tallet. Af denne grund tildeles floats generelt flere bits (f.eks. 64 i stedet for 32).
Eksempel: Lad os sige, at vi ville repræsentere et float-tal med 6 bits, hvoraf de 2 længst til højre er den brøkdel, der udgør brøkdelen. Hvad ville så være værdien af:
101010?

Tegn og strenge

Alle symboler på tastaturet – bogstaver, cifre osv. – repræsenteres internt i en computers hukommelse med et tal. Vi kalder disse tegn.
Afbildningerne mellem tal og symboler er defineret i ASCII-tabellen: http://www.lookuptables.com/.
Afbildningstabellen blev kendt som ASCII-tabellen eller ASCII-koden. Med ASCII blev hvert symbol repræsenteret med et tal mellem 0 og 255 (spørgsmål: hvor mange bits er nødvendige for at gemme et sådant tal?)
For ikke at være engelsk-centreret anvender moderne computersystemer nu Unicode, som kan repræsentere mange forskellige sprog og kræver yderligere bits til at repræsentere hvert symbol. Men for engelske symboler kan ASCII-tabellen stadig bruges til at slå værdien af hvert symbol op.

En streng er en sekvens af tegn, f.eks. “hund”. Internt lagrer vi unicode-nummeret for hvert tegn og et særligt tegn for slutningen af strengen. Så ordet “hund” er i virkeligheden unicode-nummeret for “d”, unicode-nummeret for “o” og unicode-tegnet for “g” og til sidst end-of-string-tegnet, som er “\0”. ‘d’ er 100 decimaltal i ASCII-tabellen, så “hund” repræsenteres med følgende decimaltal (gemt i 16 bit hver):
100 111 103 103 0
Tal gemmes generelt som hele tal, som forklaret ovenfor. Men når vi får input fra brugeren eller viser værdier, skal vi håndtere tal, der er repræsenteret som en sekvens af cifre. Ligesom med bogstaver er cifre tegn. Cifferet “0” er unicode-nummeret 48 og “9” er unicode-nummeret 57. Strengen “724” lagres internt som: 55 50 52 52 0

Arbejdsark

1. Overvej følgende seksten bits:

0000 0000 0100 1101

a. Hvad er værdien af tallet, hvis det repræsenterer et positivt heltal (heltal)?
b. Hvis bitstrengen repræsenterer et symbol, hvilket symbol er det så? Du kan bruge ascii-opslagstabellen http://www.lookuptables.com/

2. Computere plejede at have 64K hukommelse. Hvad er K? Er det et rundt tal? Hvorfor arbejder dataloger ikke med pæne runde tal som 1000?
3. Hvad er en megabyte? En gigabyte? Hvad er tusind gigabyte? En million gigabyte?
4. Vis, hvordan følgende tre base-10-taller ville blive repræsenteret i binære tal.

24 1025 43

5. Vis, hvordan “kat” repræsenteres i bits?
6. Hvor mange mulige tegn kan repræsenteres med unicode (16 bits)?
7. Hvad er det største heltal, der kan repræsenteres med 4 bytes, hvis vi kun betragter positive tal?
8. Hvis vi også betragter negative tal, hvad er så det største heltal, der kan repræsenteres med 4 bytes ? Hvordan tror du, at negative tal repræsenteres?
9. Skriv en pythonfunktion, der tager en streng af cifre som parameter og returnerer et heltal, som er basis-10-værdien af disse cifre, f.eks. hvis parameteren er “723” returnerer funktionen heltallet 723 (Ja, jeg ved godt, at Python har en int-funktion – du skriver den her).
10. Skriv en python-funktion, der tager en streng af base-10-cifre som parameter og returnerer en streng af base-2-cifre, således at base-2-cifrene er den konverterede værdi af de oprindelige base-10-cifre. Hvis der f.eks. blev sendt “11”, ville funktionen returnere “1011”.
Arbejd med blyant og papir på ovenstående spørgsmål. Når du er færdig, kan du kontrollere dine svar på binær konvertering her: http://mistupid.com/computers/binaryconv.htm
Binær konvertering hjælp:

Binære tal fra CSUNPLUGGED

Binære tal på 60 sekunder

Leave a comment

Din e-mailadresse vil ikke blive publiceret.