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 repræsenterer sættet af hele tal, fra nul op, 3 00:00:12,540 --> 00:00:15,110 kun at bruge cifrene nul og én. 4 00:00:15,110 --> 00:00:17,890 I denne video, vil vi bruge binær notation til 5 00:00:17,890 --> 00:00:21,160 repræsentere tekst, breve og sådan, så godt. 6 00:00:21,160 --> 00:00:22,810 >> Hvorfor skulle vi gider at gøre dette? 7 00:00:22,810 --> 00:00:25,450 Nå, under kølerhjelmen, en computer kun virkelig 8 00:00:25,450 --> 00:00:29,070 forstår nuller og ettaller, de binære tal, da disse 9 00:00:29,070 --> 00:00:32,100 kan repræsenteres nemt med elektromagnetiske ting. 10 00:00:32,100 --> 00:00:35,040 >> For eksempel, tænk på din computers hukommelse som en lang 11 00:00:35,040 --> 00:00:37,810 perlerække af pærer, hvor hvert enkelt pære 12 00:00:37,810 --> 00:00:40,680 repræsenterer et nul, hvis den er slukket, og en en 13 00:00:40,680 --> 00:00:42,230 hvis den er tændt. 14 00:00:42,230 --> 00:00:44,730 I stedet for at bruge en masse pærer, nogle moderne 15 00:00:44,730 --> 00:00:46,990 hukommelse gør dette ved hjælp kondensatorer, der holder en lav 16 00:00:46,990 --> 00:00:49,120 oplades til at repræsentere et nul og et høj ladning 17 00:00:49,120 --> 00:00:50,780 at repræsentere en én. 18 00:00:50,780 --> 00:00:52,510 >> Der findes andre metoder også. 19 00:00:52,510 --> 00:00:55,500 Anyway, for at lagre noget i hukommelsen, skal vi 20 00:00:55,500 --> 00:00:57,590 først konvertere det til noget, der kan være faktisk 21 00:00:57,590 --> 00:01:00,140 repræsenteret i den fysiske hardware. 22 00:01:00,140 --> 00:01:02,450 Så lad os tænke over, hvordan vi kan repræsentere bogstaver med 23 00:01:02,450 --> 00:01:04,230 binær notation. 24 00:01:04,230 --> 00:01:08,141 På engelsk har vi 26 bogstaver i alfabetisk, A, 25 00:01:08,141 --> 00:01:12,930 >> B, C, D, og ​​så videre, op gennem Z. Vi kan tildele hver af 26 00:01:12,930 --> 00:01:16,650 disse et antal, siger nul til 25, og derefter bruge 27 00:01:16,650 --> 00:01:18,880 binær notation, at vi kan repræsentere hvert nummer som en 28 00:01:18,880 --> 00:01:20,890 sekvens af nuller og ettaller. 29 00:01:20,890 --> 00:01:22,420 Det er ikke alt for dårlig. 30 00:01:22,420 --> 00:01:25,050 Dog er der ikke vil være nok. 31 00:01:25,050 --> 00:01:27,680 Med dette system kan man faktisk ikke skelne mellem 32 00:01:27,680 --> 00:01:29,830 store og små bogstaver. 33 00:01:29,830 --> 00:01:32,140 Hvis vi ønsker, at vores computer for at kunne skelne mellem 34 00:01:32,140 --> 00:01:36,020 de to sager, har vi brug yderligere 26 numre. 35 00:01:36,020 --> 00:01:38,700 Og hvad med perioder, kommaer og 36 00:01:38,700 --> 00:01:40,390 andre skilletegn? 37 00:01:40,390 --> 00:01:43,560 >> På mit tastatur, jeg har 32 af dem, herunder alle de 38 00:01:43,560 --> 00:01:46,800 specialtegn som f.eks indskudsmærke og tegnet. 39 00:01:46,800 --> 00:01:49,700 Det er ikke inklusive cifret karakterer, nul til ni, 40 00:01:49,700 --> 00:01:51,840 da vi stadig ønsker at være i stand til at skrive tal i decimal 41 00:01:51,840 --> 00:01:54,840 notation på computeren, selvom computeren kun virkelig 42 00:01:54,840 --> 00:01:57,830 forstår binær notation under kølerhjelmen. 43 00:01:57,830 --> 00:02:00,620 >> Og endelig vil vi nødt til at repræsentere et mellemrumstegn så 44 00:02:00,620 --> 00:02:02,450 at vores Space Bar virker. 45 00:02:02,450 --> 00:02:04,920 Så regne ud, hvordan at repræsentere tekst på computeren 46 00:02:04,920 --> 00:02:08,400 tager lidt mere, end vi kunne have troet i første omgang. 47 00:02:08,400 --> 00:02:11,710 Derudover formoder vi så komme med vores egen kodning 48 00:02:11,710 --> 00:02:14,560 ordningen til at repræsentere tegn som tal. 49 00:02:14,560 --> 00:02:17,470 Men vi beslutter at indkode tegn vil uundgåeligt være 50 00:02:17,470 --> 00:02:20,630 vilkårlig, som vi så tidligere, da vi talte om at bruge 51 00:02:20,630 --> 00:02:23,730 numre nul gennem 25 for at repræsentere bogstaverne A 52 00:02:23,730 --> 00:02:26,850 gennem Z. Hvorfor ikke bruge 10 til 35, så vi kan spare 53 00:02:26,850 --> 00:02:29,350 nul til ni for cifrede karakterer? 54 00:02:29,350 --> 00:02:31,590 >> Der er ingen reel grund, vi bare valgte den virkede 55 00:02:31,590 --> 00:02:33,770 bedst for os. 56 00:02:33,770 --> 00:02:37,650 Tilbage i begyndelsen af ​​1960'erne, var dette et reelt problem. 57 00:02:37,650 --> 00:02:39,370 Forskellige computerproducenter brugte 58 00:02:39,370 --> 00:02:41,910 forskellige kodningsskemaer, og dette gjorde kommunikation 59 00:02:41,910 --> 00:02:44,340 mellem forskellige maskiner en meget vanskelig opgave. 60 00:02:44,340 --> 00:02:47,810 The American National Standards Institute, ANSI, 61 00:02:47,810 --> 00:02:50,210 nedsat et udvalg til at udvikle en fælles 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 Interchange, mere almindeligt kendt som ASCII, blev født. 64 00:02:58,600 --> 00:03:01,360 >> ASCII var udformet som en syv-bit-kodning, som 65 00:03:01,360 --> 00:03:03,800 betyder, at hvert tegn repræsenteres af en kombination 66 00:03:03,800 --> 00:03:06,070 af syv nuller og ettaller. 67 00:03:06,070 --> 00:03:09,670 Med disse to mulige værdier,, nul eller ét for hver 68 00:03:09,670 --> 00:03:14,040 De syv bit er der to til den syvende eller 128 69 00:03:14,040 --> 00:03:16,120 tegn, der kan være repræsenteret med ASCII 70 00:03:16,120 --> 00:03:18,140 kodningsskema. 71 00:03:18,140 --> 00:03:21,480 Så 128 tegn lyder af meget, ikke? 72 00:03:21,480 --> 00:03:24,180 Nå, husk at der er 26 små bogstaver i 73 00:03:24,180 --> 00:03:29,260 Engelsk, yderligere 26 store bogstaver, 10 cifre tegn, 74 00:03:29,260 --> 00:03:31,470 32 tegnsætning og specialtegn 75 00:03:31,470 --> 00:03:33,430 og ét mellemrum karakter. 76 00:03:33,430 --> 00:03:37,050 >> Det sætter os på 95, så vi har en anden 33 tegn, vi 77 00:03:37,050 --> 00:03:38,400 kan repræsentere. 78 00:03:38,400 --> 00:03:39,900 >> Så hvad der er tilbage? 79 00:03:39,900 --> 00:03:43,130 Tja, i de dage i udviklingen af ​​ASCII, fjernskriver 80 00:03:43,130 --> 00:03:45,080 maskiner, som er skrivemaskiner, der bruges til 81 00:03:45,080 --> 00:03:48,040 sende beskeder på tværs af et netværk, var udbredt. 82 00:03:48,040 --> 00:03:50,030 Og disse maskiner havde yderligere tegn, der bruges til 83 00:03:50,030 --> 00:03:52,890 kontrollere dem, for eksempel fortælle dem, hvornår de skal flytte 84 00:03:52,890 --> 00:03:57,620 udskrive hovedet ned en linje, linjeskift eller ny linie tast, 85 00:03:57,620 --> 00:04:00,440 når at flytte til venstre margen, vognretur, 86 00:04:00,440 --> 00:04:04,890 eller blot returnere nøglen, og hvornår de skal gå et rum, 87 00:04:04,890 --> 00:04:07,760 backspace karakter, og så videre. 88 00:04:07,760 --> 00:04:10,250 >> Disse tegn kaldes kontrol tegn, og de 89 00:04:10,250 --> 00:04:12,680 udgør resten af ​​ASCII sæt. 90 00:04:12,680 --> 00:04:15,230 Så hvis vi ser på en ASCII-tabellen, kan vi se, at den første 91 00:04:15,230 --> 00:04:18,800 32 numre, nul til 31, er reserveret til kontrol 92 00:04:18,800 --> 00:04:20,200 tegn. 93 00:04:20,200 --> 00:04:23,420 Men vi sagde bare, at der var 33 styretegn. 94 00:04:23,420 --> 00:04:24,780 Hvad er det for noget? 95 00:04:24,780 --> 00:04:29,350 Nå, tallet nul og 127, den første og sidste af 96 00:04:29,350 --> 00:04:32,560 ASCII sæt, har særlige bitmønstre, nuller og alle 97 00:04:32,560 --> 00:04:34,710 dem, hhv. 98 00:04:34,710 --> 00:04:36,860 >> Designerne af ASCII besluttede derfor at 99 00:04:36,860 --> 00:04:39,610 bevare disse numre for ekstra specialtegn, 100 00:04:39,610 --> 00:04:43,310 nemlig nul karakter og DEL karakter. 101 00:04:43,310 --> 00:04:46,340 Null og DEL var beregnet til papir tape redigering, som anvendte 102 00:04:46,340 --> 00:04:48,930 at være en almindelig måde at lagre data. 103 00:04:48,930 --> 00:04:51,850 Papir tape var bogstavelig talt lige en lang strimmel papir, og på 104 00:04:51,850 --> 00:04:53,760 regelmæssige mellemrum på båndet, ville du punch 105 00:04:53,760 --> 00:04:55,430 huller at gemme data. 106 00:04:55,430 --> 00:04:58,720 Afhængigt af bredden af ​​båndet, vil hver kolonne er 107 00:04:58,720 --> 00:05:03,186 kan rumme fem, seks, syv eller otte bits. 108 00:05:03,186 --> 00:05:05,930 >> For at repræsentere en nul-bit, så ville du ikke gøre noget for det bånd, du vil 109 00:05:05,930 --> 00:05:07,930 bare efterlade en tom plads. 110 00:05:07,930 --> 00:05:10,560 For en én bit, ville du punch et hul. 111 00:05:10,560 --> 00:05:12,980 Den null karakter ville bare efterlade en tom kolonne, 112 00:05:12,980 --> 00:05:14,480 angivelse af alle nuller. 113 00:05:14,480 --> 00:05:17,250 Og DEL karakter ville slå en kolonne fuld af huller 114 00:05:17,250 --> 00:05:18,550 gennem båndet. 115 00:05:18,550 --> 00:05:21,300 Som et resultat, kan du bruge DEL karakter til at slette 116 00:05:21,300 --> 00:05:22,440 information. 117 00:05:22,440 --> 00:05:25,060 Forestil dig at tage en udfyldte valg afstemning, og derefter 118 00:05:25,060 --> 00:05:27,180 stansning alle unpunched huller. 119 00:05:27,180 --> 00:05:29,410 >> Du ugyldig afstemning, fordi det er umuligt at 120 00:05:29,410 --> 00:05:31,820 fortælle, hvad de oprindelige stemmer var. 121 00:05:31,820 --> 00:05:34,720 Mens DEL karakter stadig bruges, er den moderne 122 00:05:34,720 --> 00:05:37,980 Slet nøgle, nul-karakteren kom til at blive anvendt som 123 00:05:37,980 --> 00:05:40,010 afslutningstegn for C-strenge og 124 00:05:40,010 --> 00:05:41,990 nogle andre dataformater. 125 00:05:41,990 --> 00:05:45,140 Du kan kende det som backslash nultegnet, 126 00:05:45,140 --> 00:05:47,720 eftersom det er, hvordan vi repræsenterer det skriftligt. 127 00:05:47,720 --> 00:05:49,580 Så tilbage til vores ASCII-tabellen. 128 00:05:49,580 --> 00:05:52,770 Efter de første 32 styretegn kommer den 95 129 00:05:52,770 --> 00:05:54,280 printbare tegn. 130 00:05:54,280 --> 00:05:55,800 >> Der er et par seje designbeslutninger værd 131 00:05:55,800 --> 00:05:57,330 taler om her. 132 00:05:57,330 --> 00:06:00,810 Det første er de decimale ciffer tegn, nul til ni, 133 00:06:00,810 --> 00:06:04,050 svarer til numrene 48 gennem 57, som synes 134 00:06:04,050 --> 00:06:06,980 tåler indtil vi ser på tallene 48 gennem 57 135 00:06:06,980 --> 00:06:09,080 skrevet i binær notation. 136 00:06:09,080 --> 00:06:11,530 Hvis vi gør det, så ser vi, at ciffertegn, 137 00:06:11,530 --> 00:06:22,320 nul, svarer til 0110000, en map til 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 det mønster? 140 00:06:27,950 --> 00:06:30,170 Hvert ciffer karakter er kortlagt til dets tilsvarende 141 00:06:30,170 --> 00:06:35,170 tilsvarende i binær notation, med præfikset 011. 142 00:06:35,170 --> 00:06:38,820 Næste op, du bemærke, at de store bogstaver begynder ved 65, 143 00:06:38,820 --> 00:06:41,310 med store bogstaver A, men de små bogstaver 144 00:06:41,310 --> 00:06:43,010 starter ikke, før 97. 145 00:06:43,010 --> 00:06:45,580 Så der er 32 pladser i mellem. 146 00:06:45,580 --> 00:06:47,000 Det forekommer underligt. 147 00:06:47,000 --> 00:06:49,500 De er kun 26 bogstaver i alfabetet. 148 00:06:49,500 --> 00:06:51,410 >> Hvorfor splitte dem op på denne måde? 149 00:06:51,410 --> 00:06:53,960 Igen, hvis vi ser på de binære repræsentationer, vi kan 150 00:06:53,960 --> 00:06:55,230 se et mønster. 151 00:06:55,230 --> 00:07:01,360 Store bogstaver A er repræsenteret ved 1000001, og små bogstaver a er 152 00:07:01,360 --> 00:07:05,810 repræsenteret ved 1.100.001. 153 00:07:05,810 --> 00:07:12,770 Store B er repræsenteret ved 1000010, og lille b er 154 00:07:12,770 --> 00:07:17,280 repræsenteret ved 1.100.010. 155 00:07:17,280 --> 00:07:19,440 Kan du fortælle, hvad der sker her? 156 00:07:19,440 --> 00:07:22,470 Den smule, der er den anden fra venstre, i de to til 157 00:07:22,470 --> 00:07:26,510 femtedele, for 32ths stilling, er 0 for alle de store 158 00:07:26,510 --> 00:07:30,120 breve og 1 for alle de små bogstaver. 159 00:07:30,120 --> 00:07:33,130 >> Det betyder, at konvertering fra store til små bogstaver, og 160 00:07:33,130 --> 00:07:36,000 omvendt, er et spørgsmål om et simpelt bit flip. 161 00:07:36,000 --> 00:07:38,380 Så det bringer os til slutningen af ​​ASCII-tabellen. 162 00:07:38,380 --> 00:07:40,700 Kan du tænke på noget vi har glemt? 163 00:07:40,700 --> 00:07:42,510 Jamen, hvad med den spanske enye, eller 164 00:07:42,510 --> 00:07:44,630 Græsk eller kyrilliske alfabet? 165 00:07:44,630 --> 00:07:46,610 Og hvad med kinesiske tegn? 166 00:07:46,610 --> 00:07:49,050 Der er en masse, der er blevet udeladt af ASCII. 167 00:07:49,050 --> 00:07:51,920 Imidlertid har en anden standard kaldet Unicode været 168 00:07:51,920 --> 00:07:53,040 udviklet til at dække 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 til en anden gang. 171 00:07:57,040 --> 00:07:58,500 Mit navn er Nate Hardison. 172 00:07:58,500 --> 00:08:00,650 Det er CS50.