1 00:00:07,220 --> 00:00:09,290 [Powered by Google Translate] NATE Hardison: In de video op binaire, we zien hoe 2 00:00:09,290 --> 00:00:12,540 vertegenwoordigen de verzameling gehele getallen van nul tot, 3 00:00:12,540 --> 00:00:15,110 met alleen de cijfers nul en een. 4 00:00:15,110 --> 00:00:17,890 In deze video gaan we binaire notatie te gebruiken om 5 00:00:17,890 --> 00:00:21,160 vertegenwoordigen tekst, letters en dergelijke, ook. 6 00:00:21,160 --> 00:00:22,810 >> Waarom zouden we de moeite om dit te doen? 7 00:00:22,810 --> 00:00:25,450 Nou ja, onder de motorkap, een computer pas echt 8 00:00:25,450 --> 00:00:29,070 begrijpt nullen en enen, de binaire getallen, aangezien deze 9 00:00:29,070 --> 00:00:32,100 kan gemakkelijk worden weergegeven met elektromagnetische dingen. 10 00:00:32,100 --> 00:00:35,040 >> Denk bijvoorbeeld van het geheugen van uw computer als een lange 11 00:00:35,040 --> 00:00:37,810 reeks van gloeilampen, waarbij elke individuele lamp 12 00:00:37,810 --> 00:00:40,680 vertegenwoordigt een nul als het uitgeschakeld, en een een 13 00:00:40,680 --> 00:00:42,230 als het is ingeschakeld. 14 00:00:42,230 --> 00:00:44,730 In plaats van een bos van gloeilampen, sommige moderne 15 00:00:44,730 --> 00:00:46,990 geheugen heeft dit met behulp van condensatoren met een lage vasthouden 16 00:00:46,990 --> 00:00:49,120 in rekening brengen van een nul en een hoge kosten zijn 17 00:00:49,120 --> 00:00:50,780 een een vertegenwoordigen. 18 00:00:50,780 --> 00:00:52,510 >> Er zijn andere technieken. 19 00:00:52,510 --> 00:00:55,500 Toch om iets te slaan, moeten we 20 00:00:55,500 --> 00:00:57,590 eerst omzetten in iets dat daadwerkelijk kan worden 21 00:00:57,590 --> 00:01:00,140 vertegenwoordigd in de fysieke hardware. 22 00:01:00,140 --> 00:01:02,450 Dus laten we nadenken over hoe we zouden kunnen letters staan ​​met 23 00:01:02,450 --> 00:01:04,230 binaire notatie. 24 00:01:04,230 --> 00:01:08,141 In het Engels, we hebben 26 letters in het alfabet, A, 25 00:01:08,141 --> 00:01:12,930 >> B, C, D, en zo verder tot en met Z. We kunnen toewijzen elk van 26 00:01:12,930 --> 00:01:16,650 deze een aantal, zeg nul tot 25, en vervolgens met behulp van 27 00:01:16,650 --> 00:01:18,880 binaire notatie, kunnen we elk nummer voor te stellen als een 28 00:01:18,880 --> 00:01:20,890 opeenvolging van nullen en enen. 29 00:01:20,890 --> 00:01:22,420 Dat is niet al te slecht. 30 00:01:22,420 --> 00:01:25,050 Maar dat is niet genoeg zal zijn. 31 00:01:25,050 --> 00:01:27,680 Met dit systeem kunnen we niet echt onderscheid maken tussen 32 00:01:27,680 --> 00:01:29,830 hoofdletters en kleine letters. 33 00:01:29,830 --> 00:01:32,140 Als we willen dat onze computer in staat zijn om onderscheid te maken tussen 34 00:01:32,140 --> 00:01:36,020 de twee zaken, dan moeten we een extra 26 nummers. 35 00:01:36,020 --> 00:01:38,700 En wat te denken van punten, komma's, en 36 00:01:38,700 --> 00:01:40,390 andere leestekens? 37 00:01:40,390 --> 00:01:43,560 >> Op mijn toetsenbord, ik heb 32 van die, met inbegrip van alle 38 00:01:43,560 --> 00:01:46,800 speciale tekens zoals de dakje en het en-teken. 39 00:01:46,800 --> 00:01:49,700 Dat is exclusief de cijfers personages, nul tot negen, 40 00:01:49,700 --> 00:01:51,840 omdat we willen nog steeds in staat zijn om getallen te typen in het decimale 41 00:01:51,840 --> 00:01:54,840 notatie op de computer, zelfs als de computer enige echt 42 00:01:54,840 --> 00:01:57,830 begrijpt binaire notatie onder de motorkap. 43 00:01:57,830 --> 00:02:00,620 >> En tenslotte, zullen we dus moeten een spatie vertegenwoordigen 44 00:02:00,620 --> 00:02:02,450 dat onze spatiebalk werkt. 45 00:02:02,450 --> 00:02:04,920 Dus uitzoeken hoe tekst weer te geven op de computer 46 00:02:04,920 --> 00:02:08,400 duurt een beetje meer dan we op het eerste gedacht hebben. 47 00:02:08,400 --> 00:02:11,710 Daarnaast neem aan dat we dan komen met onze eigen codering 48 00:02:11,710 --> 00:02:14,560 regeling om tekens te vertegenwoordigen als getallen. 49 00:02:14,560 --> 00:02:17,470 Maar we besluiten om te coderen karakters zal onvermijdelijk 50 00:02:17,470 --> 00:02:20,630 willekeurig, zoals we eerder zagen toen we spraken over het gebruik van de 51 00:02:20,630 --> 00:02:23,730 nummers nul tot en met 25 van de letters staan ​​voor A 52 00:02:23,730 --> 00:02:26,850 tot en met Z. Waarom niet 10 dus gebruik tot en met 35 die we kunnen besparen 53 00:02:26,850 --> 00:02:29,350 nul tot en met negen voor het cijfer personages? 54 00:02:29,350 --> 00:02:31,590 >> Er is geen echte reden, we kozen wat leek 55 00:02:31,590 --> 00:02:33,770 beste voor ons is. 56 00:02:33,770 --> 00:02:37,650 Terug in de vroege jaren 1960, was dit een echt probleem. 57 00:02:37,650 --> 00:02:39,370 Verschillende computerfabrikanten werden met behulp van 58 00:02:39,370 --> 00:02:41,910 verschillende coderingsschema's, en dit maakte communicatie 59 00:02:41,910 --> 00:02:44,340 tussen verschillende machines een zeer moeilijke taak. 60 00:02:44,340 --> 00:02:47,810 Het American National Standards Institute, ANSI, 61 00:02:47,810 --> 00:02:50,210 vormden een commissie om een ​​gemeenschappelijke regeling te ontwikkelen. 62 00:02:50,210 --> 00:02:53,780 En in 1963, de American Standard Code for Information 63 00:02:53,780 --> 00:02:58,600 Interchange, beter bekend als ASCII, werd geboren. 64 00:02:58,600 --> 00:03:01,360 >> ASCII is ontworpen als een zeven-bit codering, die 65 00:03:01,360 --> 00:03:03,800 betekent dat ieder teken gerepresenteerd door een combinatie 66 00:03:03,800 --> 00:03:06,070 zeven nullen en enen. 67 00:03:06,070 --> 00:03:09,670 Met deze twee mogelijke waarden nul of een voor elk 68 00:03:09,670 --> 00:03:14,040 van de zeven bits, zijn er twee de zevende of 128 69 00:03:14,040 --> 00:03:16,120 karakters die worden weergegeven met de ASCII 70 00:03:16,120 --> 00:03:18,140 coderen regeling. 71 00:03:18,140 --> 00:03:21,480 Dus 128 tekens klinkt als veel, toch? 72 00:03:21,480 --> 00:03:24,180 Nou, bedenk dan dat er zijn 26 kleine letters in 73 00:03:24,180 --> 00:03:29,260 Engels, nog eens 26 hoofdletters, 10-cijferige karakters, 74 00:03:29,260 --> 00:03:31,470 32 leestekens en speciale tekens, 75 00:03:31,470 --> 00:03:33,430 en een spatie. 76 00:03:33,430 --> 00:03:37,050 >> Dat brengt ons op 95, dus we hebben nog 33 tekens die we 77 00:03:37,050 --> 00:03:38,400 kan vertegenwoordigen. 78 00:03:38,400 --> 00:03:39,900 >> Dus wat blijft er over? 79 00:03:39,900 --> 00:03:43,130 Nou, in de dagen van de ontwikkeling van ASCII, telex 80 00:03:43,130 --> 00:03:45,080 machines, die schrijfmachines die worden gebruikt om 81 00:03:45,080 --> 00:03:48,040 berichten versturen via een netwerk, werden op grote schaal. 82 00:03:48,040 --> 00:03:50,030 En deze machines hadden extra tekens gebruikt om 83 00:03:50,030 --> 00:03:52,890 controle vallen, bijvoorbeeld om hen te vertellen wanneer te bewegen de 84 00:03:52,890 --> 00:03:57,620 afdrukken hoofd naar beneden een lijn, de line feed of nieuwe lijntoets, 85 00:03:57,620 --> 00:04:00,440 wanneer om naar de linkermarge, de carriage return, 86 00:04:00,440 --> 00:04:04,890 of gewoon terug toets, en wanneer te gaan een plaats terug, de 87 00:04:04,890 --> 00:04:07,760 backspace karakter, enzovoort. 88 00:04:07,760 --> 00:04:10,250 >> Deze tekens worden genoemd controle karakters, en zij 89 00:04:10,250 --> 00:04:12,680 vormen de rest van de set ASCII. 90 00:04:12,680 --> 00:04:15,230 Dus als we kijken naar een ASCII-tabel, zien we dat de eerste 91 00:04:15,230 --> 00:04:18,800 32 nummers, nul tot en met 31, zijn gereserveerd voor de controle 92 00:04:18,800 --> 00:04:20,200 tekens. 93 00:04:20,200 --> 00:04:23,420 Maar we zojuist hebben gezegd dat er 33 controle karakters. 94 00:04:23,420 --> 00:04:24,780 Wat is de deal? 95 00:04:24,780 --> 00:04:29,350 En het getal nul en 127, de eerste en laatste 96 00:04:29,350 --> 00:04:32,560 ASCII set, hebben speciale bitpatronen, alle nullen en alle 97 00:04:32,560 --> 00:04:34,710 die respectievelijk. 98 00:04:34,710 --> 00:04:36,860 >> De ontwerpers van ASCII daarom besloten om 99 00:04:36,860 --> 00:04:39,610 behouden deze nummers voor extra speciale tekens, 100 00:04:39,610 --> 00:04:43,310 namelijk de nul karakter en de DEL karakter. 101 00:04:43,310 --> 00:04:46,340 Null en DEL waren bestemd voor papieren tape bewerken, dat vroeger 102 00:04:46,340 --> 00:04:48,930 een gemeenschappelijke manier van opslag data. 103 00:04:48,930 --> 00:04:51,850 Papieren tape was letterlijk een lange strook papier, en op 104 00:04:51,850 --> 00:04:53,760 regelmatig op de band, zou je punch 105 00:04:53,760 --> 00:04:55,430 gaten voor gegevensopslag. 106 00:04:55,430 --> 00:04:58,720 Afhankelijk van de breedte van de band, zou elke kolom zijn 107 00:04:58,720 --> 00:05:03,186 kunnen vijf, zes, zeven of acht bits passen. 108 00:05:03,186 --> 00:05:05,930 >> Om een ​​nul beetje te vertegenwoordigen, zou je niets doen om de tape, zou je 109 00:05:05,930 --> 00:05:07,930 gewoon laten een lege ruimte. 110 00:05:07,930 --> 00:05:10,560 Voor een een beetje, zou je punch een gat. 111 00:05:10,560 --> 00:05:12,980 De null karakter zou gewoon laat een lege kolom, 112 00:05:12,980 --> 00:05:14,480 vermelding van alle nullen. 113 00:05:14,480 --> 00:05:17,250 En de DEL karakter zou slaan een kolom vol gaten 114 00:05:17,250 --> 00:05:18,550 door je tape. 115 00:05:18,550 --> 00:05:21,300 Als gevolg hiervan, kunt u gebruik maken van de DEL teken te verwijderen 116 00:05:21,300 --> 00:05:22,440 gegevens. 117 00:05:22,440 --> 00:05:25,060 Stel je voor het nemen van een ingevulde verkiezingsstemming en vervolgens 118 00:05:25,060 --> 00:05:27,180 ponsen alle ongeperforeerde gaten. 119 00:05:27,180 --> 00:05:29,410 >> Je vervalt de stemming, want het is onmogelijk om 120 00:05:29,410 --> 00:05:31,820 vertellen wat de oorspronkelijke stemmen waren. 121 00:05:31,820 --> 00:05:34,720 Terwijl de DEL karakter wordt nog steeds gebruikt is de moderne 122 00:05:34,720 --> 00:05:37,980 Delete-toets, het nul-karakter kwam om te worden gebruikt als de 123 00:05:37,980 --> 00:05:40,010 beëindiging karakter voor C strijkers en 124 00:05:40,010 --> 00:05:41,990 een aantal andere data formaten. 125 00:05:41,990 --> 00:05:45,140 Misschien ken je het als de backslash nul karakter, 126 00:05:45,140 --> 00:05:47,720 want dat is hoe we het vertegenwoordigen schriftelijk. 127 00:05:47,720 --> 00:05:49,580 Dus terug naar onze ASCII-tabel. 128 00:05:49,580 --> 00:05:52,770 Na de eerste 32 besturingstekens komen de 95 129 00:05:52,770 --> 00:05:54,280 afdrukbare tekens. 130 00:05:54,280 --> 00:05:55,800 >> Er zijn een paar leuke ontwerpbeslissingen waard 131 00:05:55,800 --> 00:05:57,330 het hier over. 132 00:05:57,330 --> 00:06:00,810 Ten eerste, de decimale cijfer personages, nul tot negen, 133 00:06:00,810 --> 00:06:04,050 overeen met de nummers 48 tot 57, die lijkt 134 00:06:04,050 --> 00:06:06,980 onopvallende totdat we kijken naar de nummers 48 tot 57 135 00:06:06,980 --> 00:06:09,080 geschreven in binaire notatie. 136 00:06:09,080 --> 00:06:11,530 Als we dat doen, dan zien we dat het cijfer karakter, 137 00:06:11,530 --> 00:06:22,320 nul overeenkomt met 0110000, 0110001 tot een maps, twee tot 138 00:06:22,320 --> 00:06:26,640 0110010, enzovoort. 139 00:06:26,640 --> 00:06:27,950 Zie het patroon? 140 00:06:27,950 --> 00:06:30,170 Elk cijfer teken wordt toegewezen aan de bijbehorende 141 00:06:30,170 --> 00:06:35,170 equivalent in binaire notatie, voorafgegaan door 011. 142 00:06:35,170 --> 00:06:38,820 Next up, merk je dat de hoofdletters beginnen bij 65, 143 00:06:38,820 --> 00:06:41,310 met hoofdletters A, maar de kleine letters 144 00:06:41,310 --> 00:06:43,010 starten niet tot 97. 145 00:06:43,010 --> 00:06:45,580 Er zijn 32 ruimten tussen. 146 00:06:45,580 --> 00:06:47,000 Dat lijkt vreemd. 147 00:06:47,000 --> 00:06:49,500 Ze zijn slechts 26 letters in het alfabet. 148 00:06:49,500 --> 00:06:51,410 >> Waarom splitsen ze als deze? 149 00:06:51,410 --> 00:06:53,960 Nogmaals, als we kijken naar de binaire representaties, kunnen we 150 00:06:53,960 --> 00:06:55,230 zie een patroon. 151 00:06:55,230 --> 00:07:01,360 Hoofdletter A wordt vertegenwoordigd door 1000001 en kleine letter a is 152 00:07:01,360 --> 00:07:05,810 vertegenwoordigd door 1.100.001. 153 00:07:05,810 --> 00:07:12,770 Hoofdletters B wordt vertegenwoordigd door 1000010, en kleine b is 154 00:07:12,770 --> 00:07:17,280 vertegenwoordigd door 1.100.010. 155 00:07:17,280 --> 00:07:19,440 Kun je vertellen wat er hier aan de hand? 156 00:07:19,440 --> 00:07:22,470 Het bit dat het tweede van links, in de twee-de 157 00:07:22,470 --> 00:07:26,510 kwinten voor 32ths positie is 0 voor alle hoofdletters 158 00:07:26,510 --> 00:07:30,120 letters, en 1 voor alle kleine letters. 159 00:07:30,120 --> 00:07:33,130 >> Dat betekent dat het omzetten van hoofdletters naar kleine letters, en 160 00:07:33,130 --> 00:07:36,000 vice versa, is een kwestie van een eenvoudige bit flip. 161 00:07:36,000 --> 00:07:38,380 Dus dat brengt ons bij het einde van de ASCII-tabel. 162 00:07:38,380 --> 00:07:40,700 Kun je denken aan alles wat we hebben vergeten? 163 00:07:40,700 --> 00:07:42,510 Nou, hoe zit het met de Spaanse enye, of de 164 00:07:42,510 --> 00:07:44,630 Griekse of cyrillische alfabet? 165 00:07:44,630 --> 00:07:46,610 En wat dacht je van Chinese karakters? 166 00:07:46,610 --> 00:07:49,050 Er is een hoop die is weggelaten van ASCII. 167 00:07:49,050 --> 00:07:51,920 Er is echter een andere standaard genaamd Unicode geweest 168 00:07:51,920 --> 00:07:53,040 ontwikkeld zijn voor deze dekking 169 00:07:53,040 --> 00:07:54,840 tekens en nog veel meer. 170 00:07:54,840 --> 00:07:57,040 >> Maar dat is een onderwerp voor een andere keer. 171 00:07:57,040 --> 00:07:58,500 Mijn naam is Nate Hardison. 172 00:07:58,500 --> 00:08:00,650 Dit is CS50.