1 00:00:07,220 --> 00:00:09,290 [Powered by Google Translate] NATE Hardison: I videoen på binære, viser vi hvordan du 2 00:00:09,290 --> 00:00:12,540 Representerer settet av hele tall, fra null på opp, 3 00:00:12,540 --> 00:00:15,110 med bare sifrene null og én. 4 00:00:15,110 --> 00:00:17,890 I denne videoen, vi kommer til å bruke binær notasjon til 5 00:00:17,890 --> 00:00:21,160 representerer tekst, brev og slikt, så vel. 6 00:00:21,160 --> 00:00:22,810 >> Hvorfor skulle vi bry å gjøre dette? 7 00:00:22,810 --> 00:00:25,450 Vel, under panseret, en datamaskin egentlig bare 8 00:00:25,450 --> 00:00:29,070 forstår nuller og enere, de binære tall, siden disse 9 00:00:29,070 --> 00:00:32,100 kan representeres lett med elektromagnetiske ting. 10 00:00:32,100 --> 00:00:35,040 >> For eksempel, tenk på datamaskinens minne som en lang 11 00:00:35,040 --> 00:00:37,810 streng med lyspærer, hvor hver enkelt pære 12 00:00:37,810 --> 00:00:40,680 representerer en null hvis den er slått av, og et en 13 00:00:40,680 --> 00:00:42,230 hvis den er slått på. 14 00:00:42,230 --> 00:00:44,730 I stedet for å bruke en haug med lyspærer, noen moderne 15 00:00:44,730 --> 00:00:46,990 minne gjør dette ved hjelp av kondensatorer som holder en lav 16 00:00:46,990 --> 00:00:49,120 lade å representere en null og en høy kostnad 17 00:00:49,120 --> 00:00:50,780 å representere en en. 18 00:00:50,780 --> 00:00:52,510 >> Det finnes andre teknikker så vel. 19 00:00:52,510 --> 00:00:55,500 Uansett, for å lagre noe i minnet, må vi 20 00:00:55,500 --> 00:00:57,590 først konvertere den til noe som kan være faktisk 21 00:00:57,590 --> 00:01:00,140 representert i fysisk maskinvare. 22 00:01:00,140 --> 00:01:02,450 Så la oss tenke på hvordan vi kan representere bokstaver med 23 00:01:02,450 --> 00:01:04,230 binær notasjon. 24 00:01:04,230 --> 00:01:08,141 På engelsk har vi 26 bokstaver i den alfabetiske, A, 25 00:01:08,141 --> 00:01:12,930 >> B, C, D, og ​​så videre, opp til Z. Vi kan tilordne hver en av 26 00:01:12,930 --> 00:01:16,650 disse et nummer, si null gjennom 25, og deretter ved hjelp av 27 00:01:16,650 --> 00:01:18,880 binær notasjon, kan vi representere hvert nummer som 28 00:01:18,880 --> 00:01:20,890 sekvens av nuller og enere. 29 00:01:20,890 --> 00:01:22,420 Det er ikke så ille. 30 00:01:22,420 --> 00:01:25,050 Men det er ikke til å være nok. 31 00:01:25,050 --> 00:01:27,680 Med dette systemet kan vi faktisk ikke skille mellom 32 00:01:27,680 --> 00:01:29,830 store og små bokstaver. 33 00:01:29,830 --> 00:01:32,140 Hvis vi ønsker vår datamaskin for å kunne skille mellom 34 00:01:32,140 --> 00:01:36,020 de to tilfellene, så vi trenger ytterligere 26 tall. 35 00:01:36,020 --> 00:01:38,700 Og hva om perioder, komma og 36 00:01:38,700 --> 00:01:40,390 andre skilletegn? 37 00:01:40,390 --> 00:01:43,560 >> På tastaturet mitt, jeg har 32 av dem, inkludert alle de 38 00:01:43,560 --> 00:01:46,800 spesialtegn som caret og tegnet. 39 00:01:46,800 --> 00:01:49,700 Det er ikke inkludert sifferet tegn, null til ni, 40 00:01:49,700 --> 00:01:51,840 siden vi fortsatt ønsker å være i stand til å skrive inn tall i desimal 41 00:01:51,840 --> 00:01:54,840 notasjon på datamaskinen, selv om datamaskinen bare virkelig 42 00:01:54,840 --> 00:01:57,830 forstår binær notasjon under panseret. 43 00:01:57,830 --> 00:02:00,620 >> Og til slutt, må vi representere et mellomrom så 44 00:02:00,620 --> 00:02:02,450 at vår Space Bar fungerer. 45 00:02:02,450 --> 00:02:04,920 Så å finne ut hvordan å representere tekst på datamaskinen 46 00:02:04,920 --> 00:02:08,400 tar litt mer enn vi kanskje har trodd i utgangspunktet. 47 00:02:08,400 --> 00:02:11,710 I tillegg antar vi da komme opp med vår egen koding 48 00:02:11,710 --> 00:02:14,560 Ordningen å representere tegn som tall. 49 00:02:14,560 --> 00:02:17,470 Men vi bestemmer oss for å kode tegn vil uunngåelig bli 50 00:02:17,470 --> 00:02:20,630 vilkårlig, som vi så tidligere da vi snakket om å bruke 51 00:02:20,630 --> 00:02:23,730 tallene null gjennom 25 for å representere bokstavene A 52 00:02:23,730 --> 00:02:26,850 gjennom Z. Hvorfor ikke bruke 10 til 35, slik at vi kan spare 53 00:02:26,850 --> 00:02:29,350 null til ni for siffer tegn? 54 00:02:29,350 --> 00:02:31,590 >> Det er ingen reell grunn, vi bare valgte det virket 55 00:02:31,590 --> 00:02:33,770 best for oss. 56 00:02:33,770 --> 00:02:37,650 Tilbake på 1960-tallet, var dette et reelt problem. 57 00:02:37,650 --> 00:02:39,370 Ulike datamaskinprodusenter brukte 58 00:02:39,370 --> 00:02:41,910 forskjellige kodingsvalg, og dette gjorde kommunikasjon 59 00:02:41,910 --> 00:02:44,340 mellom forskjellige maskiner en svært vanskelig oppgave. 60 00:02:44,340 --> 00:02:47,810 American National Standards Institute, ANSI, 61 00:02:47,810 --> 00:02:50,210 dannet en komité for å utvikle en felles ordning. 62 00:02:50,210 --> 00:02:53,780 Og i 1963, American Standard Code for Information 63 00:02:53,780 --> 00:02:58,600 Utveksling, mer kjent som ASCII, ble født. 64 00:02:58,600 --> 00:03:01,360 >> ASCII er designet som en syv-bit koding, som 65 00:03:01,360 --> 00:03:03,800 betyr at hvert tegn er representert ved en kombinasjon 66 00:03:03,800 --> 00:03:06,070 av syv nuller og enere. 67 00:03:06,070 --> 00:03:09,670 Med disse to mulige verdier, null eller en, for hver 68 00:03:09,670 --> 00:03:14,040 av de syv biter, er det to til den syvende eller 128 69 00:03:14,040 --> 00:03:16,120 tegn som kan representeres med ASCII 70 00:03:16,120 --> 00:03:18,140 koding ordningen. 71 00:03:18,140 --> 00:03:21,480 Så 128 tegn høres ut som mye, ikke sant? 72 00:03:21,480 --> 00:03:24,180 Vel, husk at det er 26 små bokstaver i 73 00:03:24,180 --> 00:03:29,260 Engelsk, en annen 26 store bokstaver, 10-sifrede karakterer, 74 00:03:29,260 --> 00:03:31,470 32 tegnsetting og spesialtegn 75 00:03:31,470 --> 00:03:33,430 og ett mellomrom karakter. 76 00:03:33,430 --> 00:03:37,050 >> Det setter oss på 95, så vi har en annen 33 tegn som vi 77 00:03:37,050 --> 00:03:38,400 kan representere. 78 00:03:38,400 --> 00:03:39,900 >> Så hva er igjen? 79 00:03:39,900 --> 00:03:43,130 Vel, i de dager utviklingen av ASCII, fjernskriver 80 00:03:43,130 --> 00:03:45,080 maskiner, som er skrivemaskiner som brukes til 81 00:03:45,080 --> 00:03:48,040 sende meldinger over et nettverk, var utbredt. 82 00:03:48,040 --> 00:03:50,030 Og disse maskinene hadde flere tegn som brukes til 83 00:03:50,030 --> 00:03:52,890 kontrollere dem, for eksempel for å fortelle dem når å flytte 84 00:03:52,890 --> 00:03:57,620 ut hodet ned en linje, linjen feed eller ny linje nøkkel, 85 00:03:57,620 --> 00:04:00,440 når du skal flytte til venstre marg, vognretur, 86 00:04:00,440 --> 00:04:04,890 eller bare gå tilbake nøkkelen, og når man skal gå tilbake én plass, 87 00:04:04,890 --> 00:04:07,760 tilbaketasten karakter, og så videre. 88 00:04:07,760 --> 00:04:10,250 >> Disse tegnene er kalt kontrolltegn, og de 89 00:04:10,250 --> 00:04:12,680 utgjør resten av ASCII settet. 90 00:04:12,680 --> 00:04:15,230 Så hvis vi ser på en ASCII-tabellen, ser vi at den første 91 00:04:15,230 --> 00:04:18,800 32 numre, null til 31, er reservert for kontroll 92 00:04:18,800 --> 00:04:20,200 tegn. 93 00:04:20,200 --> 00:04:23,420 Men vi sa at det var 33 kontrolltegn. 94 00:04:23,420 --> 00:04:24,780 Hva er greia? 95 00:04:24,780 --> 00:04:29,350 Vel, tallet null og 127, den første og siste av 96 00:04:29,350 --> 00:04:32,560 ASCII sett, har spesielle bit mønster, alle nuller og alle 97 00:04:32,560 --> 00:04:34,710 seg, henholdsvis. 98 00:04:34,710 --> 00:04:36,860 >> Designerne av ASCII besluttet derfor å 99 00:04:36,860 --> 00:04:39,610 bevare disse tallene for ekstra spesialtegn, 100 00:04:39,610 --> 00:04:43,310 nemlig null karakter og DEL karakter. 101 00:04:43,310 --> 00:04:46,340 Null og DEL var ment for papir tape redigering, som brukte 102 00:04:46,340 --> 00:04:48,930 å være en vanlig måte å lagre data. 103 00:04:48,930 --> 00:04:51,850 Papir tape var bokstavelig talt bare en lang stripe av papir, og på 104 00:04:51,850 --> 00:04:53,760 jevne mellomrom på båndet, vil du slå 105 00:04:53,760 --> 00:04:55,430 hull å lagre data. 106 00:04:55,430 --> 00:04:58,720 Avhengig av bredden av båndet, ville hver kolonne være 107 00:04:58,720 --> 00:05:03,186 stand til å betjene fem, seks, syv, eller åtte biter. 108 00:05:03,186 --> 00:05:05,930 >> Å representere en null bit, du ville gjøre noe for å tape, ville du 109 00:05:05,930 --> 00:05:07,930 bare la et mellomrom. 110 00:05:07,930 --> 00:05:10,560 For en bit, vil du slå et hull. 111 00:05:10,560 --> 00:05:12,980 Null karakter ville bare legge igjen en tom kolonne, 112 00:05:12,980 --> 00:05:14,480 indikerer alle nuller. 113 00:05:14,480 --> 00:05:17,250 Og DEL karakter ville slå en kolonne full av hull 114 00:05:17,250 --> 00:05:18,550 gjennom kassetten. 115 00:05:18,550 --> 00:05:21,300 Som et resultat, kan du bruke DEL tegnet for å slette 116 00:05:21,300 --> 00:05:22,440 informasjon. 117 00:05:22,440 --> 00:05:25,060 Tenk deg å ta en utfylte valg stemmeseddelen og deretter 118 00:05:25,060 --> 00:05:27,180 punching alle unpunched hull. 119 00:05:27,180 --> 00:05:29,410 >> Du ugyldig stemmeseddel fordi det er umulig å 120 00:05:29,410 --> 00:05:31,820 fortelle hva de opprinnelige stemmer var. 121 00:05:31,820 --> 00:05:34,720 Mens DEL tegnet brukes fortsatt er den moderne 122 00:05:34,720 --> 00:05:37,980 Slette tasten kom null tegnet å bli brukt som 123 00:05:37,980 --> 00:05:40,010 avslutningstegnet for C strenger og 124 00:05:40,010 --> 00:05:41,990 noen andre dataformater. 125 00:05:41,990 --> 00:05:45,140 Du kjenner kanskje det som backslash null tegn, 126 00:05:45,140 --> 00:05:47,720 siden det er hvordan vi representerer det skriftlig. 127 00:05:47,720 --> 00:05:49,580 Så tilbake til vårt ASCII-tabellen. 128 00:05:49,580 --> 00:05:52,770 Etter de første 32 kontrolltegn kommer 95 129 00:05:52,770 --> 00:05:54,280 utskrivbare tegn. 130 00:05:54,280 --> 00:05:55,800 >> Det er et par kule design beslutninger verdt 131 00:05:55,800 --> 00:05:57,330 snakker om her. 132 00:05:57,330 --> 00:06:00,810 Første, desimaltall tegn, null til ni, 133 00:06:00,810 --> 00:06:04,050 samsvarer med tallene 48 gjennom 57, som synes 134 00:06:04,050 --> 00:06:06,980 unremarkable før vi ser på tallene 48 gjennom 57 135 00:06:06,980 --> 00:06:09,080 skrevet i binær notasjon. 136 00:06:09,080 --> 00:06:11,530 Hvis vi gjør det, så ser vi at sifferteikn, 137 00:06:11,530 --> 00:06:22,320 null, tilsvarer 0110000, en kart å 0110001, to til 138 00:06:22,320 --> 00:06:26,640 0110010, og så videre. 139 00:06:26,640 --> 00:06:27,950 Se mønsteret? 140 00:06:27,950 --> 00:06:30,170 Hvert siffer karakter er kartlagt til den tilsvarende 141 00:06:30,170 --> 00:06:35,170 tilsvarende i binær notasjon, prefiks 011. 142 00:06:35,170 --> 00:06:38,820 Neste opp, merker du at de store bokstaver starter på 65, 143 00:06:38,820 --> 00:06:41,310 med store bokstaver A, men de små bokstaver 144 00:06:41,310 --> 00:06:43,010 ikke starte før 97. 145 00:06:43,010 --> 00:06:45,580 Så er det 32 ​​plasser i mellom. 146 00:06:45,580 --> 00:06:47,000 Det virker merkelig. 147 00:06:47,000 --> 00:06:49,500 De er bare 26 bokstaver i alfabetet. 148 00:06:49,500 --> 00:06:51,410 >> Hvorfor dele dem opp som dette? 149 00:06:51,410 --> 00:06:53,960 Igjen, hvis vi ser på de binære representasjoner, kan vi 150 00:06:53,960 --> 00:06:55,230 se et mønster. 151 00:06:55,230 --> 00:07:01,360 Store bokstaver A er representert med 1000001, og små bokstaver a er 152 00:07:01,360 --> 00:07:05,810 representert ved 1.100.001. 153 00:07:05,810 --> 00:07:12,770 Store bokstaver B er representert med 1000010, og små b er 154 00:07:12,770 --> 00:07:17,280 representert ved 1.100.010. 155 00:07:17,280 --> 00:07:19,440 Kan du fortelle hva som skjer her? 156 00:07:19,440 --> 00:07:22,470 Bit som er den andre fra venstre, i to til 157 00:07:22,470 --> 00:07:26,510 kvinter for 32ths posisjon, er 0 for alle store 158 00:07:26,510 --> 00:07:30,120 brev, og en for alle de små bokstaver. 159 00:07:30,120 --> 00:07:33,130 >> Det betyr konvertering fra store til små bokstaver, og 160 00:07:33,130 --> 00:07:36,000 vice versa, er et spørsmål om en enkel bit flip. 161 00:07:36,000 --> 00:07:38,380 Så det bringer oss til slutten av ASCII-tabellen. 162 00:07:38,380 --> 00:07:40,700 Kan du tenke deg noe vi har glemt? 163 00:07:40,700 --> 00:07:42,510 Vel, hva med den spanske enye, eller 164 00:07:42,510 --> 00:07:44,630 Gresk eller kyrilliske alfabeter? 165 00:07:44,630 --> 00:07:46,610 Og hva med kinesiske tegn? 166 00:07:46,610 --> 00:07:49,050 Det er mye som er blitt utelatt fra ASCII. 167 00:07:49,050 --> 00:07:51,920 Imidlertid har en annen standard kalt Unicode vært 168 00:07:51,920 --> 00:07:53,040 utviklet for å dekke alle disse 169 00:07:53,040 --> 00:07:54,840 tegn og mange flere. 170 00:07:54,840 --> 00:07:57,040 >> Men det er et emne for en annen tid. 171 00:07:57,040 --> 00:07:58,500 Mitt navn er Nate Hardison. 172 00:07:58,500 --> 00:08:00,650 Dette er CS50.