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。