TAL OG DATA

redigér

Emner:

  • Talsystemer: binær, octal, decimal og hexadecimal.
  • Binær regning: addition, subtraktion, og boleanske operatorer.
  • Kodede værdier: BCD og ASCII
  • Fejl detektering: prioritet, gray kode, og checksum

Mål:

  • At have kendskab til tal systemerne binær, octal og hexadecimal
  • At være i stand til at omregne imellem talsystemer
  • At forstå 2s negative tal
  • At være i stand til at kode/afkode ASCII og BCD værdier
  • At have kendskab til grundlæggende fejl detekterings teknikker


Indledning

redigér

Base 10 (decimal) tal udviklede sig naturligt, da de originale udviklere (sandsynligvis) havde 10 fingre, eller 10 cifre. Overvej nu logiske systemer, som kun har ledninger der kan være tændte eller slukkede. Når man tæller med en ledning er der kun cifrene 0 og 1, det giver et base 2 talsystem. Talsystemer til computere er ofte baseret på base 2 tal, men base 4, 8, 16 og 32 bruges ofte. Figur 13.1 viser en liste over talsystemer, et eksempel på hvordan der tælles i de forskellige talsystemer er vist i figur 13.2.


Base Navn Data enhed
2 Binær Bit
8 Octal Nibble
10 Decimal Digit
16 Hexadecimal Byte


Figur 13.1 Tal systemer


Decimal Binær Octal Hexadecimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a
11 1011 13 b
12 1100 14 c
13 1101 15 d
14 1110 16 e
15 1111 17 f
16 10000 20 10
17 10001 21 11
18 10010 22 12
19 10011 23 13
20 10100 24 14
 


Figur 13.2 Tal i Decimal, Binær, Octal og Hexadecimal


At ændre tallets base ændre ikke på dens værdi, kun hvordan den skrives. Matematikkens basale regler gælder stadig, men mange begyndere vil føle sig desorienterede. Dette kapitel dækker de basale emner der er nødvendige for at bruge de mere komplekse programmerings instruktioner senere I bogen. Dette vil inkludere de grundlæggende talsystemer, omregning imellem talsystemer, og nogle data orienterede emner.


Numeriske værdier

redigér

Det mest fundamentale talsystem I computere er det binære. Et enkelt binær ciffer (et bit) svare til tilstanden af en enkel ledning. Hvis spændingen på ledningen er høj er bit værdien 1, og hvis der ikke er en spænding er værdien 0. Hvis der bruges to eller flere ledninger tilføjer de hver et nyt ciffer. Hvert binært tal har en tilsvarende digital værdi. Figur 13.3 viser hvordan man omregner et binært tal til det tilsvarende decimale tal. Læs cifrene fra højre. Den mindst betydende ciffer er 1, og den er i den 0’te position, for at omregne det til et tilsvarende decimal tal skal tal basen (2) opløftes til positionen nummeret, og multipliceres med cifferet. Ved det mindst betydende ciffer er det let. Det mest betydende ciffer, med værdien 1 på den sjette position, omregnes med tal basen opløftet til potensen 6 og multipliceret med ciffer værdien 1. Denne metode kan også bruges til at omregne andre tal systemer til decimal.


Binær tal: 1 1 0 1 0 0 1
 
Tilsvarende Decimaltal:              
 
 
 
  = 64
  = 32
  = 0
  = 8
  = 0
  = 0
  = 1
105


Figur 13.3 Omregning af et binært tal til et decimal tal


Decimalt tal kan omregnes til binære tal ved division, som vist i figur 13.4. Ved denne teknik begyndes med at dividere decimaltallet med basen i det nye talsystem. Brøkdelen efter decimaltallet giver det mindst betydende ciffer i det nye tal, når det multipliceres med tal basen. Det hele tal divideres nu igen, og det fortsættes til det hele tale er nul. Denne metode virker også til omregning af andre talsystemer.


Start med decimal tallet 932 Multiplicer delen efter kommaet med basen, her 2 da det er binær
   
  = 466 ,0     = 0
   
Omregn til binær (base 2)   = 233 ,0     = 0
 
  = 116 ,5     = 1
 
  = 58 ,0     = 0
 
  = 29 ,0     = 0
 
  = 14 ,5     = 1
 
  = 7 ,0     = 0
 
  = 3 ,5     = 1
 
  = 1 ,5     = 1
 
  = 0 ,5     = 1
   
Færdig Det binære tal er: 1110100100


Denne metode virker også med andre tal baser, nævneren og tallet der multipliceres med skal ændres til det nye tal base.


Figur 13.4 Omregning fra decimal til binær


De fleste større lommeregnere kan omregne imellem tal baser. Men det er vigtigt af forstå hvordan der omregnes imellem tal baser. Binære har tre basale former - et bit, et byte og et ord (eng. Word). Et bit er et enkelt binær ciffer, et byte er otte binære cifre, og et ord er 16 cifres. Der er vist et byte og et ord i Figur 13.5. Læg mærke til at ved begge tal er det mindst betydende (Least Significant Bit – LSB) ciffer på højre side af tallene, og i ordet er der to byte, den til højre er det mindst betydende byte.


Byte Ord
 
MSB LSB MSB LSB
       
01101011    
mest betydende byte     mindst betydende byte


Figur 13.5 Byte og ord


Binære numre kan også repræsentere decimaler, som vist i figur 13.6. Omregningen til og fra binær er den samme som den tidligere viste teknik, bortset fra at cifrene til højre for kommaet er decimaler.


Binær 101,011
           
  decimal


Figur 13.6 Et binært decimalt tal







BCD (Binært Kodet Decimal)

redigér

Binært kodede decimal (BCD) tal bruger fire binære bit (et nibble) til hvert ciffer. (Note: dette er ikke et base tal system, men repræsentere kun decimal tal). Det betyder at et byte kan indeholde to cifre fra 00 til 99, hvor det i binært vil kunne indeholde fra 0 til 255. Et separat bit skal bruges til negative tal. Denne metode er meget populær når tal skal bruges til indgang eller udgang fra en computer. Et eksempel på et BCD tale er vist i figur 13.16, i eksemplet er der fire cifre, der skal derfor bruges 16 bit. Læg mærke til at det mest betydende ciffer og bit begge er i venstre side. BCD tallet er det tilsvarende binære tal for hver ciffer.


1 2 6 3 Note: Dette eksempel viser fire cifre
i to byte, hex værdien vil også
være 1263
 
0001 0010 0110 0011


Figur 13.16 Et BCD kodet tal


De fleste PLC’er gemmer BCD tal I ord, det tillader værdier imellem 0000 og 9999. De har også funktioner til at omregne til og fra BCD. Det er muligt at regne med BCD tal, det er ualmindeligt, men når det er nødvendigt har de fleste PLC’er funktioner til at udføre udregningerne. Men når du laver udregninger bør du undgå BCD og bruge integrer matematik i stedet. Vær opmærksom på hvor dine tal er BCD værdier og omregn dem til integer eller binære værdier før der udføres nogen udregninger.


Karakterkoder

redigér

ASCII (American Standard Code for Information Interchange)

redigér

Når man arbejder med ikke numeriske værdier eller data kan man bruge ren tekst karakter og sætninger (strings). Hvert karakter gives en unikt identitet der kan bruges til at gemme og behandle data. ASCII (American Standard Code for Information Interchange) er et meget brugt karakter kode system, vist i Figur 13.17, tabellen indeholder de basale skrevne karakterer, nogle speciel karakterer, og nogle kontrol koder. Hvert enkelt har et unikt tal, for eksempel bogstavet A, det genkendes af de fleste computere når de ser nummeret 65.


decimal hex binær ANCII decimal hex binær ANCII
0 0 00000000 NUL 64 40 01000000 @
1 1 00000001 SOH 65 41 01000001 A
2 2 00000010 STX 66 42 01000010 B
3 3 00000011 ETX 67 43 01000011 C
4 4 00000100 EOT 68 44 01000100 D
5 5 00000101 ENQ 69 45 01000101 E
6 6 00000110 ACK 70 46 01000110 F
7 7 00000111 BEL 71 47 01000111 G
8 8 00001000 BS 72 48 01001000 H
9 9 00001001 HT 73 49 01001001 I
10 A 00001010 LF 74 4A 01001010 J
11 B 00001011 VT 75 4B 01001011 K
12 C 00001100 FF 76 4C 01001100 L
13 D 00001101 CR 77 4D 01101101 M
14 E 00001110 S0 78 4E 01001110 N
15 F 00001111 S1 79 4F 01001111 O
16 10 00010000 DLE 80 50 01010000 P
17 11 00010001 DC1 81 51 01010001 Q
18 12 00010010 DC2 82 52 01010010 R
19 13 00010011 DC3 83 53 01010011 S
20 14 00010100 DC4 84 54 01010100 T
21 15 00010101 NAK 85 55 01010101 U
22 16 00010110 SYN 86 56 01010110 V
23 17 00010111 ETB 87 57 01010111 W
24 18 00011000 CAN 88 58 01011000 X
25 19 00011001 EM 89 59 01011001 Y
26 1A 00011010 SUB 90 5A 01011010 Z
27 1B 00011011 ESC 91 5B 01011011 [
28 1C 00011100 FS 92 5C 01011100 yen
29 1D 00011101 GS 93 5D 01011101 ]
30 1E 00011110 RS 94 5E 01011110 ^
31 1F 00011111 US 95 5F 01011111 _
32 20 00100000 mellemrum 96 60 01100000 `
33 21 00100001 ! 97 61 01100001 a
34 22 00100010 " 98 62 01100010 b
35 23 00100011 # 99 63 01100011 c
36 24 00100100 $ 100 64 01100100 d
37 25 00100101 % 101 65 01100101 e
38 26 00100110 & 102 66 01100110 f
39 27 00100111 ' 103 67 01100111 g
40 28 00101000 ( 104 68 01101000 h
41 29 00101001 ) 105 69 01101001 i
42 2A 00101010 * 106 6A 01101010 j
43 2B 00101011 + 107 6B 01101011 k
44 2C 00101100 , 108 6C 01101100 l
45 2D 00101101 - 109 6D 01101101 m
46 2E 00101110 . 110 6E 01101110 n
47 2F 00101111 / 111 6F 01101111 o
48 30 00110000 0 112 70 01110000 p
49 31 00110001 1 113 71 01110001 q
50 32 00110010 2 114 72 01110010 r
51 33 00110011 3 115 73 01110011 s
52 34 00110100 4 116 74 01110100 t
53 35 00110101 5 117 75 01110101 u
54 36 00110110 6 118 76 01110110 v
55 37 00110111 7 119 77 01110111 w
56 38 00111000 8 120 78 01111000 x
57 39 00111001 9 121 79 01111001 y
58 3A 00111010 : 122 7A 01111010 z
59 3B 00111011 ; 123 7B 01111011 {
60 3C 00111100 < 124 7C 01111100 |
61 3D 00111101 = 125 7D 01111101 }
62 3E 00111110 > 126 7E 01111110 r arr.
63 3F 00111111 ? 127 7F 01111111 l arr.


Figur 13.17 ASCII Karakter table
"PLC bogen/Tal og data" er en del af wikibogen: PLC bogen
Forrige side: PLC sekvens Næste side: PLC hukommelse