1 00:00:07,220 --> 00:00:09,290 [Powered by Google Translate] NATE哈迪森:在二进制上的视频中,我们将展示如何 2 00:00:09,290 --> 00:00:12,540 代表整数的组,从零上升, 3 00:00:12,540 --> 00:00:15,110 仅使用数字0和1。 4 00:00:15,110 --> 00:00:17,890 在这段视频中,我们将使用二进制表示法 5 00:00:17,890 --> 00:00:21,160 表示文字,字母等,以及。 6 00:00:21,160 --> 00:00:22,810 >> 我们为什么要刻意去这样做呢? 7 00:00:22,810 --> 00:00:25,450 好了,引擎盖下,一台电脑只有真正 8 00:00:25,450 --> 00:00:29,070 理解零和一的二进制数字,因为这些 9 00:00:29,070 --> 00:00:32,100 可以表示容易与电磁事情。 10 00:00:32,100 --> 00:00:35,040 >> 例如,考虑一下您的计算机的内存一样长 11 00:00:35,040 --> 00:00:37,810 灯泡的字符串的,因此每个单独的泡 12 00:00:37,810 --> 00:00:40,680 表示零,如果它关闭,和一 13 00:00:40,680 --> 00:00:42,230 如果它打开。 14 00:00:42,230 --> 00:00:44,730 而不是使用一堆灯泡,一些现代的 15 00:00:44,730 --> 00:00:46,990 内存并使用电容有低 16 00:00:46,990 --> 00:00:49,120 充电到代表一个零点和一个高的电荷 17 00:00:49,120 --> 00:00:50,780 代表1。 18 00:00:50,780 --> 00:00:52,510 >> 以及其他技术。 19 00:00:52,510 --> 00:00:55,500 总之,以存储在内存中的什么,我们需要 20 00:00:55,500 --> 00:00:57,590 首先把它转换成的东西,可实际上 21 00:00:57,590 --> 00:01:00,140 在物理硬件。 22 00:01:00,140 --> 00:01:02,450 因此,让我们想想我们怎么可能代表字母 23 00:01:02,450 --> 00:01:04,230 二进制表示法。 24 00:01:04,230 --> 00:01:08,141 在英语中,我们已经得到了26个英文字母中的字母,A, 25 00:01:08,141 --> 00:01:12,930 >> A,B,C,D,等,我们可以分配到Z的每一个 26 00:01:12,930 --> 00:01:16,650 这些数目,例如零至25,并然后使用 27 00:01:16,650 --> 00:01:18,880 二进制表示法中,我们可以作为一个代表每个数字 28 00:01:18,880 --> 00:01:20,890 序列的零和一。 29 00:01:20,890 --> 00:01:22,420 这不是太糟糕了。 30 00:01:22,420 --> 00:01:25,050 然而,这不会是不够的。 31 00:01:25,050 --> 00:01:27,680 有了这个系统,我们实际上并不能够区分 32 00:01:27,680 --> 00:01:29,830 大写字母和小写字母。 33 00:01:29,830 --> 00:01:32,140 如果我们希望我们的计算机能够区分 34 00:01:32,140 --> 00:01:36,020 这两种情况,那么我们就需要一个额外的26个数字。 35 00:01:36,020 --> 00:01:38,700 和什么有关句号,逗号和 36 00:01:38,700 --> 00:01:40,390 其他标点符号? 37 00:01:40,390 --> 00:01:43,560 >> 在我的键盘,我已经拿到了32的人,包括所有的 38 00:01:43,560 --> 00:01:46,800 插入符号等特殊字符和符号。 39 00:01:46,800 --> 00:01:49,700 这还不包括数字字符,零到9, 40 00:01:49,700 --> 00:01:51,840 因为我们仍然希望能够输入十进制的数字 41 00:01:51,840 --> 00:01:54,840 符号的计算机上,即使电脑只有真正的 42 00:01:54,840 --> 00:01:57,830 理解二进制表示法的引擎盖下。 43 00:01:57,830 --> 00:02:00,620 >> 最后,我们需要代表一个空格字符 44 00:02:00,620 --> 00:02:02,450 我们的空间酒吧的工作。 45 00:02:02,450 --> 00:02:04,920 因此,搞清楚如何来表示文字在电脑上 46 00:02:04,920 --> 00:02:08,400 需要更多一点,可能比我们最初认为。 47 00:02:08,400 --> 00:02:11,710 此外,假设我们再拿出我们自己的编码 48 00:02:11,710 --> 00:02:14,560 方案为数字来表示字符。 49 00:02:14,560 --> 00:02:17,470 然而,我们决定字符编码将不可避免地 50 00:02:17,470 --> 00:02:20,630 任意的,正如我们所看到更早的时候,我们谈到使用 51 00:02:20,630 --> 00:02:23,730 数字0至25来表示字母A 52 00:02:23,730 --> 00:02:26,850 到Z为什么不使用10到35这样我们就可以节省 53 00:02:26,850 --> 00:02:29,350 0到9的数字字符? 54 00:02:29,350 --> 00:02:31,590 >> 有没有真正的理由,我们只是选择了一切似乎 55 00:02:31,590 --> 00:02:33,770 我们最好的。 56 00:02:33,770 --> 00:02:37,650 早在20世纪60年代初,这是一个真正的问题。 57 00:02:37,650 --> 00:02:39,370 不同的电脑制造商使用 58 00:02:39,370 --> 00:02:41,910 不同的编码方案,这使通信 59 00:02:41,910 --> 00:02:44,340 不同机器之间的一个非常艰巨的任务。 60 00:02:44,340 --> 00:02:47,810 美国国家标准协会ANSI, 61 00:02:47,810 --> 00:02:50,210 成立了一个委员会,以制定一项共同计划。 62 00:02:50,210 --> 00:02:53,780 而在1963年,美国标准码信息 63 00:02:53,780 --> 00:02:58,600 交汇处,通常被称为ASCII诞生了。 64 00:02:58,600 --> 00:03:01,360 >> ASCII的目的是为7位编码, 65 00:03:01,360 --> 00:03:03,800 装置的每一个字符的组合来表示 66 00:03:03,800 --> 00:03:06,070 7个零和一。 67 00:03:06,070 --> 00:03:09,670 与这两个可能的值,零个或一个,对于每个 68 00:03:09,670 --> 00:03:14,040 的7位,有两个的第七或128 69 00:03:14,040 --> 00:03:16,120 可以表示的ASCII字符 70 00:03:16,120 --> 00:03:18,140 编码方案。 71 00:03:18,140 --> 00:03:21,480 因此,128个字符听起来好像很多,对不对? 72 00:03:21,480 --> 00:03:24,180 好了,记得有26小写字母 73 00:03:24,180 --> 00:03:29,260 英语,另外26个大写字母,10个数字字符, 74 00:03:29,260 --> 00:03:31,470 32个标点符号和特殊字符, 75 00:03:31,470 --> 00:03:33,430 和一个空格字符。 76 00:03:33,430 --> 00:03:37,050 >> 这使我们在95,所以我们有33个字符, 77 00:03:37,050 --> 00:03:38,400 可以代表。 78 00:03:38,400 --> 00:03:39,900 >> 那么是什么呢? 79 00:03:39,900 --> 00:03:43,130 那么,在的日子ASCII的发展,电传 80 00:03:43,130 --> 00:03:45,080 机,这是打字机,用于 81 00:03:45,080 --> 00:03:48,040 在网络上发送消息,广为流传。 82 00:03:48,040 --> 00:03:50,030 这些机器有额外的字符,用来 83 00:03:50,030 --> 00:03:52,890 控制它们,例如,告诉他们当移动 84 00:03:52,890 --> 00:03:57,620 打印头向下行,换行或新行键, 85 00:03:57,620 --> 00:04:00,440 当移动到左边距,回车, 86 00:04:00,440 --> 00:04:04,890 或者干脆返回键,以及什么时候去一个空间, 87 00:04:04,890 --> 00:04:07,760 退格字符,等等。 88 00:04:07,760 --> 00:04:10,250 >> 这些字符称为控制字符,并且他们 89 00:04:10,250 --> 00:04:12,680 的ASCII字符集构成的其余部分。 90 00:04:12,680 --> 00:04:15,230 因此,如果我们看一下在ASCII表中,我们可以看到,第一 91 00:04:15,230 --> 00:04:18,800 32号,零到31的,留作控制的 92 00:04:18,800 --> 00:04:20,200 字符。 93 00:04:20,200 --> 00:04:23,420 但是,我们刚才说的,有33个控制字符。 94 00:04:23,420 --> 00:04:24,780 这是怎么回事呢? 95 00:04:24,780 --> 00:04:29,350 那么,的零的个数和127中,第一和最后的 96 00:04:29,350 --> 00:04:32,560 ASCII字符集,有特殊的位模式,全0和所有 97 00:04:32,560 --> 00:04:34,710 的分别。 98 00:04:34,710 --> 00:04:36,860 >> 的ASCII码的设计者决定,因此,要 99 00:04:36,860 --> 00:04:39,610 保留这些额外的特殊字符,数字, 100 00:04:39,610 --> 00:04:43,310 即空字符和的DEL性格。 101 00:04:43,310 --> 00:04:46,340 Null和用于编辑纸带,使用DEL 102 00:04:46,340 --> 00:04:48,930 是一种常见的方式存储数据。 103 00:04:48,930 --> 00:04:51,850 简直是长条形纸,在纸带 104 00:04:51,850 --> 00:04:53,760 定期到磁带上,你冲 105 00:04:53,760 --> 00:04:55,430 孔,以存储数据。 106 00:04:55,430 --> 00:04:58,720 根据上的带的宽度,将每一​​列 107 00:04:58,720 --> 00:05:03,186 能够容纳五个,六个,七个或八个位。 108 00:05:03,186 --> 00:05:05,930 >> 要代表一个零位,你会做什么到磁带上,你会 109 00:05:05,930 --> 00:05:07,930 只留一个空格。 110 00:05:07,930 --> 00:05:10,560 对于一个位,你会打一个洞。 111 00:05:10,560 --> 00:05:12,980 空字符,只留下一个空白列, 112 00:05:12,980 --> 00:05:14,480 表示所有零。 113 00:05:14,480 --> 00:05:17,250 DEL字符会打一个孔列满 114 00:05:17,250 --> 00:05:18,550 通过您的磁带。 115 00:05:18,550 --> 00:05:21,300 因此,您可以使用DEL字符删除 116 00:05:21,300 --> 00:05:22,440 的信息。 117 00:05:22,440 --> 00:05:25,060 想象一下,一个充满了选举​​的选票,然后 118 00:05:25,060 --> 00:05:27,180 冲压所有未穿孔的洞。 119 00:05:27,180 --> 00:05:29,410 >> 您的选票无效,因为这是不可能的 120 00:05:29,410 --> 00:05:31,820 什么原票。 121 00:05:31,820 --> 00:05:34,720 虽然DEL字符仍然采用的是现代 122 00:05:34,720 --> 00:05:37,980 删除键,空字符来被用作 123 00:05:37,980 --> 00:05:40,010 C字符串和终止字符 124 00:05:40,010 --> 00:05:41,990 一些其他的数据格式。 125 00:05:41,990 --> 00:05:45,140 你可能知道它的的反斜线零字符, 126 00:05:45,140 --> 00:05:47,720 因为这是我们如何代表它写下来。 127 00:05:47,720 --> 00:05:49,580 所以回到我们的ASCII表。 128 00:05:49,580 --> 00:05:52,770 后的前32个控制字符来95 129 00:05:52,770 --> 00:05:54,280 可打印字符。 130 00:05:54,280 --> 00:05:55,800 >> 有一对夫妇很酷的设计决定价值 131 00:05:55,800 --> 00:05:57,330 这里所说的。 132 00:05:57,330 --> 00:06:00,810 首先,十进制数字符,0到9, 133 00:06:00,810 --> 00:06:04,050 对应的数字48至57,这似乎 134 00:06:04,050 --> 00:06:06,980 籍籍无名,直到我们看数字48到57 135 00:06:06,980 --> 00:06:09,080 写的二进制记数法。 136 00:06:09,080 --> 00:06:11,530 如果我们这样做,那么我们看到的数字字符, 137 00:06:11,530 --> 00:06:22,320 为零,对应于011万,1的地图为0110001,两至 138 00:06:22,320 --> 00:06:26,640 0110010,依此类推。 139 00:06:26,640 --> 00:06:27,950 请参阅模式? 140 00:06:27,950 --> 00:06:30,170 每一个数字字符映射到相应的 141 00:06:30,170 --> 00:06:35,170 相当于二进制表示法中,以011开头。 142 00:06:35,170 --> 00:06:38,820 接下来,您会发现大写字母开始,在65, 143 00:06:38,820 --> 00:06:41,310 大写的A,但小写字母 144 00:06:41,310 --> 00:06:43,010 没有开始,直到97。 145 00:06:43,010 --> 00:06:45,580 因此,有32位之间。 146 00:06:45,580 --> 00:06:47,000 这似乎不可思议。 147 00:06:47,000 --> 00:06:49,500 他们只有26个字母在字母表中。 148 00:06:49,500 --> 00:06:51,410 >> 为什么把它们分开这样吗? 149 00:06:51,410 --> 00:06:53,960 同样,如果我们看的二进制表示,我们可以 150 00:06:53,960 --> 00:06:55,230 看到一个模式。 151 00:06:55,230 --> 00:07:01,360 大写字母A代表1000001,小写a是 152 00:07:01,360 --> 00:07:05,810 为代表的1100001。 153 00:07:05,810 --> 00:07:12,770 大写的B表示的1000010,和小写字母b是 154 00:07:12,770 --> 00:07:17,280 为代表的1100010。 155 00:07:17,280 --> 00:07:19,440 你们能告诉我是怎么回事? 156 00:07:19,440 --> 00:07:22,470 位,从左侧的第二,在两个到 157 00:07:22,470 --> 00:07:26,510 五分之二,32ths位置,是对所有的大写0 158 00:07:26,510 --> 00:07:30,120 字母和所有的小写字母。 159 00:07:30,120 --> 00:07:33,130 >> 这意味着从大写转换为小写, 160 00:07:33,130 --> 00:07:36,000 (反之亦然),是一个简单的位翻转的问题。 161 00:07:36,000 --> 00:07:38,380 所以,给我们带来了结束的ASCII表。 162 00:07:38,380 --> 00:07:40,700 你能想到的东西我们都忘了? 163 00:07:40,700 --> 00:07:42,510 那么,什么对西班牙enye的,或 164 00:07:42,510 --> 00:07:44,630 希腊或西里尔字母吗? 165 00:07:44,630 --> 00:07:46,610 关于中国的字符呢? 166 00:07:46,610 --> 00:07:49,050 有很多被冷落的ASCII。 167 00:07:49,050 --> 00:07:51,920 然而,另一种名为Unicode标准已经 168 00:07:51,920 --> 00:07:53,040 发展到覆盖所有的这些 169 00:07:53,040 --> 00:07:54,840 字符等等。 170 00:07:54,840 --> 00:07:57,040 >> 但是,这是另一次的主题。 171 00:07:57,040 --> 00:07:58,500 我的名字是Nate哈迪森。 172 00:07:58,500 --> 00:08:00,650 这是CS50。