240 likes | 372 Views
Kronljusströmställaren 0, 1, 2, 3. Styr med binärkod. Dec – Bin – Hex – Okt. 218 10 = 11011010 2 = DA 16 = 332 8. Komplementräkning. Subtraktion med en additionsmaskin = komplementräkning. 63 - 17 = 46
E N D
Kronljusströmställaren 0, 1, 2, 3 William Sandqvist william@kth.se
Styr med binärkod William Sandqvist william@kth.se
Dec – Bin – Hex – Okt 21810 = 110110102 = DA16 = 3328 William Sandqvist william@kth.se
Komplementräkning Subtraktion med en additionsmaskin = komplementräkning 63 - 17 = 46 Talet -17 slås in som med röda siffror 17 och blir då 82. När - tangenten trycks in adderas 1. Resultatet blir: 63+82+1 = 146. Om bara två siffror visas: 46 William Sandqvist william@kth.se
2-komplement Binärtalet 3, 0011, blir negativt -3 genom att man inverterar alla bitar och lägger till ett, 1101. William Sandqvist william@kth.se
Registeraritmetik • Datorregister är ”ringar” Ett fyra bitars register rymmer 24 = 16 tal. Antingen 8 positiva (+0…+7) och 8 negativa (-1…-8) tal ”med tecken”, eller 16 (0…F) ”teckenlösa” tal. Om registret är fullt gör ”+1” att det ”slår runt”. Den första mikroprocessorn var en sådan fyra bitars ”nibble”-dator William Sandqvist william@kth.se
Registerlängd • 4 bitar kallas Nibble. Registret rymmer 24 = 16 tal. 0…15, -8…+7 • 8 bitar kallas Byte. Registret rymmer 28 = 256 tal.0…255, -128…+127 • 16 bitar kallas Word. 216 = 65536 tal.0…65535, -32768…+32767 Vanliga registerstorlekar är idag 32 bitar (DoubleWord) och 64 bitar (QuadWord ). William Sandqvist william@kth.se
Exempel registerlängd Ett datorregister som blir fullt slår runt som km-räknaren på en bil. En speciell Carry-flagga kan signalera om detta hänt! William Sandqvist william@kth.se
Overflow När man räknar med ”tal med tecken” kan summan av två positiva tal felaktigt bli negativ (tex. ”+4” + ”+5” = ”-7”), liksom summan av två negativa tal felaktigt kan bli positiv (tex. ”-6” + ”-7” = ”+3”). Detta kallas för Overflow. William Sandqvist william@kth.se
( Sign Extension ) Om ett tal ”med tecken” ska kopieras från ett kort register (tex. 4 bitar) till ett längre register (tex. 8 bitar) gör man Signextension. Är talet positivt fyller man på med inledande 0:or är det negativt med inledande 1:or. William Sandqvist william@kth.se
Windowsprogrammet Kalkylatorn View: Scientific Talsystem: Bin Oct Dec Hex Registerstorlekar: Byte Word Dword Qword Operatorer: + - * / Mod And Or Xor Not … William Sandqvist william@kth.se
Reella tal Decimalkomma ”,” och Binärpunkt ”.” 10,312510 = 1010.01012 OBS! Midrange PIC-program bör helst använda heltal. William Sandqvist william@kth.se
IEEE – 32 bit float Genom att exponenteten skrivs exess–127 kan flyttal storlekssorteras med vanlig heltalsaritmetik! Gratisversionen av vår kompilator har 24 bit float.( OBS! använder Du float tar minnet snabbt slut! ) Dec IEEE-754 William Sandqvist william@kth.se
ASCII-tabellen Varje tecken lagras i en Byte, char. ”Hej!”48 65 6A 21 0001001000 01100101 01101010 00100001 00000000 PICKit 2 UART Tool använder \r\n http://ascii-table.com/ William Sandqvist william@kth.se
C’s Datatyper Heltalsvariabler: char, short int, int, long signed eller unsigned Flyttalsvariabler: float, double William Sandqvist william@kth.se
( Hur många Byte är en int? ) det får man veta genom att köra ett testprogram på sin PC: #include <stdio.h> int main(void) { printf("typ\t\tbytes\n"); printf("signed char \t%d\n", sizeof(char)); printf("unsigned char \t%d\n", sizeof(unsignedchar)); printf("signed int \t%d\n", sizeof(int)); printf("unsigned int \t%d\n", sizeof(unsignedint)); printf("long \t\t%d\n", sizeof(long int)); printf("float \t\t%d\n", sizeof(float)); printf("double \t\t%d\n", sizeof(double)); system("PAUSE"); return 0; } William Sandqvist william@kth.se
PIC-processorn? Ej enligt ANSI-standarden, men lämpliga storlekar för en pytteliten 8-bitsprocessor som har bitinstruktioner är: bit 1/8 Byte, char 1 Byte (unsigned), int 1Byte (signed)long 2 Bytes (signed) William Sandqvist william@kth.se
Laboration, 4-bits additionskrets William Sandqvist william@kth.se
Carry In Overflow A B NOT B Carry Out Sign William Sandqvist william@kth.se
Tal utan tecken Exempel: 9+6=F (15) William Sandqvist william@kth.se
Tal med tecken Exempel: 3 + (-3) = 0 William Sandqvist william@kth.se
Stora tal med fyrbitsadderare FEC16 = 407610 1DB16 = 47510 C + B = (1)71+E+D = F+D = (1)C1+F+1 = 2 + F = (1)1 0+1=(0)1 11C716 = 455110 William Sandqvist william@kth.se
Lycka till med laborationen! William Sandqvist william@kth.se