1 00:00:07,220 --> 00:00:09,290 [Powered by Google Translate] NATE Hardison: No vídeo em binário, vamos mostrar como 2 00:00:09,290 --> 00:00:12,540 representam o conjunto de números inteiros, de zero em cima, 3 00:00:12,540 --> 00:00:15,110 utilizando apenas os dígitos de zero e um. 4 00:00:15,110 --> 00:00:17,890 Neste vídeo, vamos usar a notação binária para 5 00:00:17,890 --> 00:00:21,160 representar texto, letras e tal, também. 6 00:00:21,160 --> 00:00:22,810 >> Por que nos preocupar para fazer isso? 7 00:00:22,810 --> 00:00:25,450 Bem, sob o capô, um computador só é realmente 8 00:00:25,450 --> 00:00:29,070 entende zeros e uns, os dígitos binários, uma vez que estes 9 00:00:29,070 --> 00:00:32,100 pode ser representado facilmente com coisas electromagnéticos. 10 00:00:32,100 --> 00:00:35,040 >> Por exemplo, pensar em memória do seu computador como uma longa 11 00:00:35,040 --> 00:00:37,810 seqüência de lâmpadas, em que cada indivíduo lâmpada 12 00:00:37,810 --> 00:00:40,680 representa um zero se ele está desligado, e um 13 00:00:40,680 --> 00:00:42,230 se ele está ligado. 14 00:00:42,230 --> 00:00:44,730 Em vez de usar um monte de lâmpadas, algumas moderna 15 00:00:44,730 --> 00:00:46,990 memória faz isso usando capacitores que possuem um baixo 16 00:00:46,990 --> 00:00:49,120 cobrar para representar um zero e uma alta carga 17 00:00:49,120 --> 00:00:50,780 para representar um. 18 00:00:50,780 --> 00:00:52,510 >> Há outras técnicas também. 19 00:00:52,510 --> 00:00:55,500 De qualquer forma, a fim de armazenar qualquer coisa na memória, precisamos 20 00:00:55,500 --> 00:00:57,590 primeiro convertê-lo em algo que possa ser realmente 21 00:00:57,590 --> 00:01:00,140 representados no hardware físico. 22 00:01:00,140 --> 00:01:02,450 Então, vamos pensar sobre como podemos representar letras com 23 00:01:02,450 --> 00:01:04,230 notação binária. 24 00:01:04,230 --> 00:01:08,141 Em Inglês, temos 26 letras no alfabética, A, 25 00:01:08,141 --> 00:01:12,930 >> B, C, D, e assim por diante, até a Z. Podemos atribuir a cada um dos 26 00:01:12,930 --> 00:01:16,650 estes um número, digamos zero a 25, e em seguida, usando 27 00:01:16,650 --> 00:01:18,880 notação binária, podemos representar cada número como uma 28 00:01:18,880 --> 00:01:20,890 seqüência de zeros e uns. 29 00:01:20,890 --> 00:01:22,420 Isso não é muito ruim. 30 00:01:22,420 --> 00:01:25,050 No entanto, isso não vai ser suficiente. 31 00:01:25,050 --> 00:01:27,680 Com este sistema, não podemos realmente distinguir entre 32 00:01:27,680 --> 00:01:29,830 letras maiúsculas e minúsculas. 33 00:01:29,830 --> 00:01:32,140 Se queremos que o nosso computador para ser capaz de diferenciar entre 34 00:01:32,140 --> 00:01:36,020 os dois casos, então precisamos de um adicional de 26 números. 35 00:01:36,020 --> 00:01:38,700 E o que dizer de períodos, vírgulas e 36 00:01:38,700 --> 00:01:40,390 outros sinais de pontuação? 37 00:01:40,390 --> 00:01:43,560 >> No meu teclado, eu tenho 32 deles, incluindo todos os 38 00:01:43,560 --> 00:01:46,800 caracteres especiais, como o acento circunflexo eo comercial. 39 00:01:46,800 --> 00:01:49,700 Isso não incluindo os caracteres de dígitos, de zero a nove, 40 00:01:49,700 --> 00:01:51,840 uma vez que ainda quero ser capaz de digitar números em decimal 41 00:01:51,840 --> 00:01:54,840 notação no computador, mesmo que o computador apenas realmente 42 00:01:54,840 --> 00:01:57,830 entende notação binária sob o capô. 43 00:01:57,830 --> 00:02:00,620 >> E, finalmente, vamos ter de representar um caractere de espaço para 44 00:02:00,620 --> 00:02:02,450 que a nossa barra de espaço funciona. 45 00:02:02,450 --> 00:02:04,920 Então, para descobrir como representar texto no computador 46 00:02:04,920 --> 00:02:08,400 Demora um pouco mais do que poderíamos ter pensado inicialmente. 47 00:02:08,400 --> 00:02:11,710 Além disso, suponha que depois vem com a nossa própria codificação 48 00:02:11,710 --> 00:02:14,560 esquema para representar caracteres como números. 49 00:02:14,560 --> 00:02:17,470 No entanto, decidir para codificar caracteres será inevitavelmente 50 00:02:17,470 --> 00:02:20,630 arbitrário, como vimos anteriormente, quando falamos sobre o uso do 51 00:02:20,630 --> 00:02:23,730 números de zero a 25 para representar as letras A 52 00:02:23,730 --> 00:02:26,850 a Z. Por que não usar de 10 a 35, de modo que podemos salvar 53 00:02:26,850 --> 00:02:29,350 zero a nove dígitos para os personagens? 54 00:02:29,350 --> 00:02:31,590 >> Não há nenhuma razão real, que apenas escolheu o que parecia 55 00:02:31,590 --> 00:02:33,770 melhor para nós. 56 00:02:33,770 --> 00:02:37,650 Voltar no início de 1960, este foi um problema real. 57 00:02:37,650 --> 00:02:39,370 Fabricantes de computadores diferentes estavam usando 58 00:02:39,370 --> 00:02:41,910 diferentes esquemas de codificação, e esta comunicação feita 59 00:02:41,910 --> 00:02:44,340 entre máquinas diferentes uma tarefa muito difícil. 60 00:02:44,340 --> 00:02:47,810 O American National Standards Institute, ANSI, 61 00:02:47,810 --> 00:02:50,210 formou um comitê para desenvolver um regime comum. 62 00:02:50,210 --> 00:02:53,780 E em 1963, o Código padrão americano para a Informação 63 00:02:53,780 --> 00:02:58,600 Interchange, mais comumente conhecido como ASCII, nasceu. 64 00:02:58,600 --> 00:03:01,360 >> ASCII foi concebido como uma codificação de sete bits, que 65 00:03:01,360 --> 00:03:03,800 significa que cada personagem é representado por uma combinação 66 00:03:03,800 --> 00:03:06,070 de sete zeros e uns. 67 00:03:06,070 --> 00:03:09,670 Com estes dois valores possíveis, zero ou um, para cada 68 00:03:09,670 --> 00:03:14,040 de sete bits, existem dois para a sétima ou 128 69 00:03:14,040 --> 00:03:16,120 caracteres que podem ser representados com o ASCII 70 00:03:16,120 --> 00:03:18,140 esquema de codificação. 71 00:03:18,140 --> 00:03:21,480 Então 128 caracteres parece muito, certo? 72 00:03:21,480 --> 00:03:24,180 Bem, lembre-se que existem 26 letras minúsculas em 73 00:03:24,180 --> 00:03:29,260 Inglês, mais 26 letras maiúsculas, 10 dígitos, personagens 74 00:03:29,260 --> 00:03:31,470 32 sinais de pontuação e caracteres especiais, 75 00:03:31,470 --> 00:03:33,430 e um caractere de espaço. 76 00:03:33,430 --> 00:03:37,050 >> Isso nos coloca em 95, portanto, nós temos outros 33 personagens que 77 00:03:37,050 --> 00:03:38,400 pode representar. 78 00:03:38,400 --> 00:03:39,900 >> Então o que resta? 79 00:03:39,900 --> 00:03:43,130 Bem, nos dias de desenvolvimento de ASCII, teletipo 80 00:03:43,130 --> 00:03:45,080 máquinas, que são máquinas de escrever que são usados ​​para 81 00:03:45,080 --> 00:03:48,040 enviar mensagens através de uma rede, foram generalizadas. 82 00:03:48,040 --> 00:03:50,030 E estas máquinas tinham caracteres adicionais utilizados para 83 00:03:50,030 --> 00:03:52,890 controlá-los, por exemplo, para dizer-lhes quando para movimentar o 84 00:03:52,890 --> 00:03:57,620 imprimir cabeça para baixo uma linha, a linha de alimentação ou a chave nova linha, 85 00:03:57,620 --> 00:04:00,440 quando se mudar para a margem esquerda, o retorno de carro, 86 00:04:00,440 --> 00:04:04,890 ou simplesmente devolvê-chave, e quando voltar um espaço, o 87 00:04:04,890 --> 00:04:07,760 caractere de retrocesso, e assim por diante. 88 00:04:07,760 --> 00:04:10,250 >> Esses personagens são chamados de caracteres de controle, e eles 89 00:04:10,250 --> 00:04:12,680 constituem o restante do conjunto de ASCII. 90 00:04:12,680 --> 00:04:15,230 Então, se olharmos para uma tabela ASCII, vemos que o primeiro 91 00:04:15,230 --> 00:04:18,800 32 números, de zero a 31, são reservados para controle 92 00:04:18,800 --> 00:04:20,200 caracteres. 93 00:04:20,200 --> 00:04:23,420 Mas nós só disse que havia 33 caracteres de controle. 94 00:04:23,420 --> 00:04:24,780 Qual é o problema? 95 00:04:24,780 --> 00:04:29,350 Bem, o número zero e 127, o primeiro eo último da 96 00:04:29,350 --> 00:04:32,560 Conjunto ASCII, tem padrões de bits especiais, todos os zeros e tudo 97 00:04:32,560 --> 00:04:34,710 os, respectivamente. 98 00:04:34,710 --> 00:04:36,860 >> Os projetistas do ASCII decidiu, portanto, a 99 00:04:36,860 --> 00:04:39,610 preservar esses números extra para caracteres especiais, 100 00:04:39,610 --> 00:04:43,310 ou seja, o caráter nulo eo caráter DEL. 101 00:04:43,310 --> 00:04:46,340 Nula e DEL foram destinados para a edição de fita de papel, que costumava 102 00:04:46,340 --> 00:04:48,930 ser uma forma comum de armazenamento de dados. 103 00:04:48,930 --> 00:04:51,850 Fita de papel foi, literalmente, apenas uma faixa grande de papel, e em 104 00:04:51,850 --> 00:04:53,760 intervalos regulares na fita, você socar 105 00:04:53,760 --> 00:04:55,430 buracos para armazenamento de dados. 106 00:04:55,430 --> 00:04:58,720 Dependendo da largura da fita, cada coluna seria 107 00:04:58,720 --> 00:05:03,186 capaz de acomodar cinco, seis, sete, ou oito bits. 108 00:05:03,186 --> 00:05:05,930 >> Para representar um bit zero, você não faria nada para a fita, você 109 00:05:05,930 --> 00:05:07,930 basta deixar um espaço em branco. 110 00:05:07,930 --> 00:05:10,560 Para um pouco um, você perfurar um buraco. 111 00:05:10,560 --> 00:05:12,980 O caractere nulo seria apenas deixar uma coluna em branco, 112 00:05:12,980 --> 00:05:14,480 indicando todos os zeros. 113 00:05:14,480 --> 00:05:17,250 E o personagem DEL daria um soco de uma coluna cheia de buracos 114 00:05:17,250 --> 00:05:18,550 através de sua fita. 115 00:05:18,550 --> 00:05:21,300 Como resultado, você pode usar o personagem DEL para apagar 116 00:05:21,300 --> 00:05:22,440 informação. 117 00:05:22,440 --> 00:05:25,060 Imagine tomar uma cédula eleitoral devidamente preenchido e depois 118 00:05:25,060 --> 00:05:27,180 perfuração todos os furos unpunched. 119 00:05:27,180 --> 00:05:29,410 >> Você invalidar a votação, porque é impossível 120 00:05:29,410 --> 00:05:31,820 dizer que os votos eram originais. 121 00:05:31,820 --> 00:05:34,720 Enquanto o personagem DEL é usado ainda é o moderno 122 00:05:34,720 --> 00:05:37,980 Tecla Delete, o caractere nulo passou a ser utilizado como o 123 00:05:37,980 --> 00:05:40,010 caractere de término para strings C e 124 00:05:40,010 --> 00:05:41,990 alguns outros formatos de dados. 125 00:05:41,990 --> 00:05:45,140 Você pode conhecê-lo como o zero barra invertida, 126 00:05:45,140 --> 00:05:47,720 já que é a forma como representá-lo por escrito. 127 00:05:47,720 --> 00:05:49,580 Então, de volta à nossa tabela ASCII. 128 00:05:49,580 --> 00:05:52,770 Após os primeiros 32 caracteres de controle vem a 95 129 00:05:52,770 --> 00:05:54,280 caracteres imprimíveis. 130 00:05:54,280 --> 00:05:55,800 >> Há algumas decisões de design frias no valor de 131 00:05:55,800 --> 00:05:57,330 falando aqui. 132 00:05:57,330 --> 00:06:00,810 Primeiro, os dígitos decimais, de zero a nove, 133 00:06:00,810 --> 00:06:04,050 correspondem aos números 48 a 57, o que parece 134 00:06:04,050 --> 00:06:06,980 banal, até que olhar para os números 48 a 57 135 00:06:06,980 --> 00:06:09,080 escrito em notação binária. 136 00:06:09,080 --> 00:06:11,530 Se fizermos isso, então vemos que o personagem dígito, 137 00:06:11,530 --> 00:06:22,320 zero, corresponde a 0110000, um mapas de 0110001, de dois a 138 00:06:22,320 --> 00:06:26,640 0110010, e assim por diante. 139 00:06:26,640 --> 00:06:27,950 Veja o padrão? 140 00:06:27,950 --> 00:06:30,170 Cada personagem dígito é mapeada pelo seu correspondente 141 00:06:30,170 --> 00:06:35,170 equivalente em notação binária, prefixo 011. 142 00:06:35,170 --> 00:06:38,820 A seguir, você percebe que as letras maiúsculas começar aos 65 anos, 143 00:06:38,820 --> 00:06:41,310 com A maiúsculo, mas as letras minúsculas 144 00:06:41,310 --> 00:06:43,010 não começar até 97. 145 00:06:43,010 --> 00:06:45,580 Portanto, há 32 espaços entre elas. 146 00:06:45,580 --> 00:06:47,000 Isso parece estranho. 147 00:06:47,000 --> 00:06:49,500 Eles são apenas 26 letras no alfabeto. 148 00:06:49,500 --> 00:06:51,410 >> Por que separá-los assim? 149 00:06:51,410 --> 00:06:53,960 Novamente, se olharmos para as representações binárias, podemos 150 00:06:53,960 --> 00:06:55,230 ver um padrão. 151 00:06:55,230 --> 00:07:01,360 Letras maiúsculas A é representado por 1000001, e as letras minúsculas são um 152 00:07:01,360 --> 00:07:05,810 representado por 1.100.001. 153 00:07:05,810 --> 00:07:12,770 Maiúscula B é representada por 1000010, e b é minúscula 154 00:07:12,770 --> 00:07:17,280 representado por 1.100.010. 155 00:07:17,280 --> 00:07:19,440 Pode dizer o que está acontecendo aqui? 156 00:07:19,440 --> 00:07:22,470 O pouco que é o segundo a partir da esquerda, em dois para o 157 00:07:22,470 --> 00:07:26,510 quintos, para a posição de 32ths, é 0 para todas as letras maiúsculas 158 00:07:26,510 --> 00:07:30,120 letras, e 1 para todas as letras minúsculas. 159 00:07:30,120 --> 00:07:33,130 >> Isso significa que a conversão de maiúsculas para minúsculas, e 160 00:07:33,130 --> 00:07:36,000 vice-versa, é uma questão de um flip-bit simples. 161 00:07:36,000 --> 00:07:38,380 Assim que nos leva ao fim da tabela ASCII. 162 00:07:38,380 --> 00:07:40,700 Você pode pensar em qualquer coisa que tenha esquecido? 163 00:07:40,700 --> 00:07:42,510 Bem, o que dizer do enye espanhol, ou o 164 00:07:42,510 --> 00:07:44,630 Alfabetos cirílico ou grego? 165 00:07:44,630 --> 00:07:46,610 E quanto a caracteres chineses? 166 00:07:46,610 --> 00:07:49,050 Há muito que foi deixado de fora da ASCII. 167 00:07:49,050 --> 00:07:51,920 No entanto, um outro padrão chamado Unicode tem sido 168 00:07:51,920 --> 00:07:53,040 desenvolvido para cobrir todos estes 169 00:07:53,040 --> 00:07:54,840 personagens e muito mais. 170 00:07:54,840 --> 00:07:57,040 >> Mas isso é um assunto para outra hora. 171 00:07:57,040 --> 00:07:58,500 Meu nome é Nate Hardison. 172 00:07:58,500 --> 00:08:00,650 Este é CS50.