1 00:00:07,220 --> 00:00:09,290 [Powered by Google Translate] NATE Hardison: I videon på binära visar vi hur 2 00:00:09,290 --> 00:00:12,540 representerar en uppsättning heltal, från noll på upp, 3 00:00:12,540 --> 00:00:15,110 använda endast siffrorna noll och ett. 4 00:00:15,110 --> 00:00:17,890 I den här videon kommer vi att använda binär notation till 5 00:00:17,890 --> 00:00:21,160 representerar text, bokstäver och sådant, liksom. 6 00:00:21,160 --> 00:00:22,810 >> Varför skulle vi bry sig om att göra detta? 7 00:00:22,810 --> 00:00:25,450 Tja, under huven, en dator egentligen bara 8 00:00:25,450 --> 00:00:29,070 förstår nollor och ettor, de binära siffror, eftersom dessa 9 00:00:29,070 --> 00:00:32,100 kan representeras enkelt med elektromagnetiska saker. 10 00:00:32,100 --> 00:00:35,040 >> Till exempel, tänk på datorns minne som en lång 11 00:00:35,040 --> 00:00:37,810 sträng av glödlampor, varvid varje enskild lampa 12 00:00:37,810 --> 00:00:40,680 representerar en noll om den är avstängd, och en 13 00:00:40,680 --> 00:00:42,230 om det är aktiverat. 14 00:00:42,230 --> 00:00:44,730 Istället för att använda en massa glödlampor, vissa moderna 15 00:00:44,730 --> 00:00:46,990 minne innebär detta att använda kondensatorer som håller en låg 16 00:00:46,990 --> 00:00:49,120 ut för att representera en nolla och en hög laddning 17 00:00:49,120 --> 00:00:50,780 att representera en. 18 00:00:50,780 --> 00:00:52,510 >> Det finns andra tekniker också. 19 00:00:52,510 --> 00:00:55,500 Hur som helst, för att lagra något i minnet, måste vi 20 00:00:55,500 --> 00:00:57,590 först konvertera den till något som kan vara faktiskt 21 00:00:57,590 --> 00:01:00,140 representerade i den fysiska hårdvaran. 22 00:01:00,140 --> 00:01:02,450 Så låt oss fundera över hur vi kan representera bokstäver med 23 00:01:02,450 --> 00:01:04,230 binär notation. 24 00:01:04,230 --> 00:01:08,141 På engelska har vi 26 bokstäver i alfabetisk, A, 25 00:01:08,141 --> 00:01:12,930 >> B, C, D, och så vidare, upp till Z. Vi kan tilldela var och en av 26 00:01:12,930 --> 00:01:16,650 dessa ett antal, säg noll till 25, och sedan använda 27 00:01:16,650 --> 00:01:18,880 binär notation kan vi representera varje nummer som 28 00:01:18,880 --> 00:01:20,890 sekvens av nollor och ettor. 29 00:01:20,890 --> 00:01:22,420 Det är inte så illa. 30 00:01:22,420 --> 00:01:25,050 Men det är kommer inte att vara tillräckligt. 31 00:01:25,050 --> 00:01:27,680 Med detta system, kan vi faktiskt inte skilja mellan 32 00:01:27,680 --> 00:01:29,830 stora och små bokstäver. 33 00:01:29,830 --> 00:01:32,140 Om vi ​​vill att vår dator för att kunna skilja mellan 34 00:01:32,140 --> 00:01:36,020 de två fallen, då behöver vi ytterligare 26 nummer. 35 00:01:36,020 --> 00:01:38,700 Och hur är det med perioder, kommatecken och 36 00:01:38,700 --> 00:01:40,390 andra skiljetecken? 37 00:01:40,390 --> 00:01:43,560 >> På mitt tangentbord, jag har 32 av dem, inklusive alla de 38 00:01:43,560 --> 00:01:46,800 specialtecken såsom cirkumflex och et-tecknet. 39 00:01:46,800 --> 00:01:49,700 Det är inte med sifferknapparna tecken, noll till nio, 40 00:01:49,700 --> 00:01:51,840 eftersom vi vill fortfarande kunna skriva siffror i decimalform 41 00:01:51,840 --> 00:01:54,840 notation på datorn, även om datorn egentligen bara 42 00:01:54,840 --> 00:01:57,830 förstår binär notation under huven. 43 00:01:57,830 --> 00:02:00,620 >> Och slutligen, vi måste representera ett blanksteg så 44 00:02:00,620 --> 00:02:02,450 att vår Mellanslag fungerar. 45 00:02:02,450 --> 00:02:04,920 Så räkna ut hur att representera text på datorn 46 00:02:04,920 --> 00:02:08,400 tar lite mer än vi kanske trott från början. 47 00:02:08,400 --> 00:02:11,710 Dessutom antar vi kommer sedan upp med vår egen kodning 48 00:02:11,710 --> 00:02:14,560 system för att representera tecken som tal. 49 00:02:14,560 --> 00:02:17,470 Men vi väljer att koda tecken oundvikligen kommer att 50 00:02:17,470 --> 00:02:20,630 godtyckliga, som vi såg tidigare när vi pratade om hur du använder 51 00:02:20,630 --> 00:02:23,730 nummer noll till 25 för att representera bokstäverna A 52 00:02:23,730 --> 00:02:26,850 genom Z. Varför inte använda 10 till 35, så att vi kan spara 53 00:02:26,850 --> 00:02:29,350 noll till nio för siffran tecken? 54 00:02:29,350 --> 00:02:31,590 >> Det finns ingen verklig anledning valde vi bara vad verkade 55 00:02:31,590 --> 00:02:33,770 bäst för oss. 56 00:02:33,770 --> 00:02:37,650 Tillbaka i början av 1960-talet var detta ett verkligt problem. 57 00:02:37,650 --> 00:02:39,370 Olika datortillverkare använde 58 00:02:39,370 --> 00:02:41,910 olika kodningsscheman och detta gjorde kommunikation 59 00:02:41,910 --> 00:02:44,340 mellan olika maskiner en mycket svår uppgift. 60 00:02:44,340 --> 00:02:47,810 American National Standards Institute, ANSI, 61 00:02:47,810 --> 00:02:50,210 bildade en kommitté för att utveckla ett gemensamt system. 62 00:02:50,210 --> 00:02:53,780 Och 1963, American Standard Code for Information 63 00:02:53,780 --> 00:02:58,600 Interchange, mer känd som ASCII, föddes. 64 00:02:58,600 --> 00:03:01,360 >> ASCII var utformad som en sju-bitars kodning, vilket 65 00:03:01,360 --> 00:03:03,800 betyder att varje tecken representeras av en kombination 66 00:03:03,800 --> 00:03:06,070 av sju nollor och ettor. 67 00:03:06,070 --> 00:03:09,670 Med dessa två möjliga värden, noll eller ett, för varje 68 00:03:09,670 --> 00:03:14,040 av de sju bitarna, finns det två till sjunde eller 128 69 00:03:14,040 --> 00:03:16,120 tecken som kan representeras med ASCII 70 00:03:16,120 --> 00:03:18,140 kodningsschema. 71 00:03:18,140 --> 00:03:21,480 Så 128 tecken låter som en hel del, eller hur? 72 00:03:21,480 --> 00:03:24,180 Tja, kom ihåg att det finns 26 små bokstäver i 73 00:03:24,180 --> 00:03:29,260 Engelska, ytterligare 26 versaler, 10 siffror tecken, 74 00:03:29,260 --> 00:03:31,470 32 interpunktion och specialtecken 75 00:03:31,470 --> 00:03:33,430 och en mellanslag. 76 00:03:33,430 --> 00:03:37,050 >> Det sätter oss på 95, så vi har en annan 33 tecken som vi 77 00:03:37,050 --> 00:03:38,400 kan representera. 78 00:03:38,400 --> 00:03:39,900 >> Så vad är kvar? 79 00:03:39,900 --> 00:03:43,130 Jo, i dagarna av utvecklingen av ASCII teletype 80 00:03:43,130 --> 00:03:45,080 maskiner, som är skrivmaskiner som används för att 81 00:03:45,080 --> 00:03:48,040 skicka meddelanden över ett nätverk, var utbredd. 82 00:03:48,040 --> 00:03:50,030 Och dessa maskiner hade ytterligare tecken som används för att 83 00:03:50,030 --> 00:03:52,890 kontrollera dem, till exempel för att berätta för dem när du ska flytta 84 00:03:52,890 --> 00:03:57,620 ut huvudet ner en rad, linje foder eller ny rad nyckel, 85 00:03:57,620 --> 00:04:00,440 när man ska gå till vänster marginal, vagnretur, 86 00:04:00,440 --> 00:04:04,890 eller helt enkelt returnera nyckeln och när du ska gå tillbaka ett steg, de 87 00:04:04,890 --> 00:04:07,760 backsteg karaktär, och så vidare. 88 00:04:07,760 --> 00:04:10,250 >> Dessa tecken kallas styrtecken, och de 89 00:04:10,250 --> 00:04:12,680 utgör resten av ASCII-uppsättningen. 90 00:04:12,680 --> 00:04:15,230 Så om vi tittar på en ASCII tabell ser vi att den första 91 00:04:15,230 --> 00:04:18,800 32 nummer, noll till 31, är reserverade för styrning 92 00:04:18,800 --> 00:04:20,200 tecken. 93 00:04:20,200 --> 00:04:23,420 Men vi sa bara att det fanns 33 styrtecken. 94 00:04:23,420 --> 00:04:24,780 Vad är det? 95 00:04:24,780 --> 00:04:29,350 Tja, siffran noll och 127, den första och sista av 96 00:04:29,350 --> 00:04:32,560 ASCII uppsättning har speciella bitmönster, nollor och alla 97 00:04:32,560 --> 00:04:34,710 sådana, respektive. 98 00:04:34,710 --> 00:04:36,860 >> Formgivarna av ASCII beslöt därför att 99 00:04:36,860 --> 00:04:39,610 bevara dessa siffror för extra specialtecken, 100 00:04:39,610 --> 00:04:43,310 nämligen noll karaktär och DEL karaktär. 101 00:04:43,310 --> 00:04:46,340 Null och DEL var avsedda för papperstejp redigering, som använde 102 00:04:46,340 --> 00:04:48,930 att vara ett vanligt sätt att lagra data. 103 00:04:48,930 --> 00:04:51,850 Papperstejp var bokstavligen bara en lång pappersremsa, och 104 00:04:51,850 --> 00:04:53,760 jämna mellanrum på bandet, skulle du punsch 105 00:04:53,760 --> 00:04:55,430 hål för att lagra data. 106 00:04:55,430 --> 00:04:58,720 Beroende på bredden av bandet, skulle varje kolumn vara 107 00:04:58,720 --> 00:05:03,186 kunna rymma fem, sex, sju, eller åtta bitar. 108 00:05:03,186 --> 00:05:05,930 >> Att representera en nolla bit, skulle du göra något för att bandet, skulle du 109 00:05:05,930 --> 00:05:07,930 bara lämna ett tomt utrymme. 110 00:05:07,930 --> 00:05:10,560 För en en bit, skulle du slå hål. 111 00:05:10,560 --> 00:05:12,980 Null karaktär skulle bara lämna en tom kolumn, 112 00:05:12,980 --> 00:05:14,480 indikerar alla nollor. 113 00:05:14,480 --> 00:05:17,250 Och DEL karaktär skulle slå en kolumn full av hål 114 00:05:17,250 --> 00:05:18,550 genom ditt band. 115 00:05:18,550 --> 00:05:21,300 Som ett resultat kan du använda DEL karaktär att radera 116 00:05:21,300 --> 00:05:22,440 informationen. 117 00:05:22,440 --> 00:05:25,060 Tänk dig att ta en ifyllda valet omröstning och sedan 118 00:05:25,060 --> 00:05:27,180 stansning alla ohålat hålen. 119 00:05:27,180 --> 00:05:29,410 >> Du ogiltig röstsedeln eftersom det är omöjligt att 120 00:05:29,410 --> 00:05:31,820 berätta vad de ursprungliga rösterna var. 121 00:05:31,820 --> 00:05:34,720 Medan DEL tecknet används fortfarande är den moderna 122 00:05:34,720 --> 00:05:37,980 Delete-tangenten kom null tecken som ska användas som 123 00:05:37,980 --> 00:05:40,010 uppsägning karaktär för C strängar och 124 00:05:40,010 --> 00:05:41,990 några andra dataformat. 125 00:05:41,990 --> 00:05:45,140 Du kanske känner det som omvänt snedstreck noll karaktär, 126 00:05:45,140 --> 00:05:47,720 eftersom det är hur vi representerar det skriftligt. 127 00:05:47,720 --> 00:05:49,580 Så tillbaka till våra ASCII tabell. 128 00:05:49,580 --> 00:05:52,770 Efter de första 32 styrtecknen kommit 95 129 00:05:52,770 --> 00:05:54,280 skrivbara tecken. 130 00:05:54,280 --> 00:05:55,800 >> Det finns ett par coola designbeslut värda 131 00:05:55,800 --> 00:05:57,330 talar om här. 132 00:05:57,330 --> 00:06:00,810 Först de decimalsiffra tecken, noll till nio, 133 00:06:00,810 --> 00:06:04,050 motsvarar numren 48 till 57, vilket verkar 134 00:06:04,050 --> 00:06:06,980 utmärker tills vi ser på siffrorna 48 till 57 135 00:06:06,980 --> 00:06:09,080 skriven i binär notation. 136 00:06:09,080 --> 00:06:11,530 Om vi ​​gör det, då ser vi att siffran karaktär, 137 00:06:11,530 --> 00:06:22,320 noll, motsvarar 0110000, en kartor till 0110001, två till 138 00:06:22,320 --> 00:06:26,640 0110010, och så vidare. 139 00:06:26,640 --> 00:06:27,950 Se mönstret? 140 00:06:27,950 --> 00:06:30,170 Varje siffra tecken är mappad till sin motsvarande 141 00:06:30,170 --> 00:06:35,170 motsvarande i binär notation, prefixet 011. 142 00:06:35,170 --> 00:06:38,820 Nästa upp, märker du att versaler börjar på 65, 143 00:06:38,820 --> 00:06:41,310 med versaler A, men de gemener 144 00:06:41,310 --> 00:06:43,010 börjar inte förrän 97. 145 00:06:43,010 --> 00:06:45,580 Så det finns 32 platser i mellan. 146 00:06:45,580 --> 00:06:47,000 Det verkar konstigt. 147 00:06:47,000 --> 00:06:49,500 De är bara 26 bokstäver i alfabetet. 148 00:06:49,500 --> 00:06:51,410 >> Varför dela upp dem så här? 149 00:06:51,410 --> 00:06:53,960 Återigen, om vi tittar på de binära representationer, kan vi 150 00:06:53,960 --> 00:06:55,230 se ett mönster. 151 00:06:55,230 --> 00:07:01,360 Versaler A representeras av 1000001 och gemener a är 152 00:07:01,360 --> 00:07:05,810 representeras av 1.100.001. 153 00:07:05,810 --> 00:07:12,770 Versaler B representeras av 1000010 och gemener b är 154 00:07:12,770 --> 00:07:17,280 representeras av 1.100.010. 155 00:07:17,280 --> 00:07:19,440 Kan du berätta vad som händer här? 156 00:07:19,440 --> 00:07:22,470 Den bit som är den andra från vänster, i två till 157 00:07:22,470 --> 00:07:26,510 femtedelar för 32ths position är 0 för alla versaler 158 00:07:26,510 --> 00:07:30,120 bokstäver, och 1 för alla gemener. 159 00:07:30,120 --> 00:07:33,130 >> Det innebär konvertering från versaler till gemener och 160 00:07:33,130 --> 00:07:36,000 vice versa, är en fråga om en enkel bit flip. 161 00:07:36,000 --> 00:07:38,380 Så det leder oss till slutet av ASCII-tabellen. 162 00:07:38,380 --> 00:07:40,700 Kan du komma på något vi har glömt? 163 00:07:40,700 --> 00:07:42,510 Nå, hur är det med den spanska enye eller 164 00:07:42,510 --> 00:07:44,630 Grekiska eller bokstäver kyrilliska? 165 00:07:44,630 --> 00:07:46,610 Och hur kinesiska tecken? 166 00:07:46,610 --> 00:07:49,050 Det finns en hel del som blivit kvar från ASCII. 167 00:07:49,050 --> 00:07:51,920 Emellertid har en annan standard som kallas Unicode varit 168 00:07:51,920 --> 00:07:53,040 utvecklats för att täcka alla dessa 169 00:07:53,040 --> 00:07:54,840 tecken och många fler. 170 00:07:54,840 --> 00:07:57,040 >> Men det är ett ämne för en annan tid. 171 00:07:57,040 --> 00:07:58,500 Mitt namn är Nate Hardison. 172 00:07:58,500 --> 00:08:00,650 Detta är CS50.