1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 DOUG LLYOYD:所以十六進制數, 好像我們需要另一個基數 3 00:00:08,510 --> 00:00:09,970 方案對不對? 4 00:00:09,970 --> 00:00:13,000 那麼,大多數西方文化, 正如你可能很熟悉, 5 00:00:13,000 --> 00:00:16,560 使用十進制系統 - 基礎 10,來表示數字數據。 6 00:00:16,560 --> 00:00:20,520 我們有數字0, 1,2,3,5,6,7,8,9。 7 00:00:20,520 --> 00:00:23,890 如果我們需要表示 值超過九高, 8 00:00:23,890 --> 00:00:26,800 我們可以將這些數字 使用位值的概念。 9 00:00:26,800 --> 00:00:30,115 因此,對於10,我們有一個1 數字其次是0位 10 00:00:30,115 --> 00:00:32,240 我們直觀地理解 這就是我們正在做的 11 00:00:32,240 --> 00:00:35,500 還有我們乘 第1次10, 12 00:00:35,500 --> 00:00:37,689 然後加入0共計10。 13 00:00:37,689 --> 00:00:40,480 計算機做一些漂亮 類似的,因為你可能熟悉, 14 00:00:40,480 --> 00:00:42,409 與二進制系統 - 基座2。 15 00:00:42,409 --> 00:00:44,700 所不同的是有 僅存在2位 16 00:00:44,700 --> 00:00:46,770 工作with-- 0和1。 17 00:00:46,770 --> 00:00:49,033 所以我們的地方價值, 而不是被之一, 18 00:00:49,033 --> 00:00:52,600 十,百,千,因為他們 將在十進位制, 19 00:00:52,600 --> 00:00:57,690 是一,二,四,八,等等。 20 00:00:57,690 --> 00:01:00,842 這裡的東西雖然, 那些0和1的,特別是 21 00:01:00,842 --> 00:01:03,800 如果我們是計算機科學家 而且我們做了很多節目 22 00:01:03,800 --> 00:01:06,924 或使用電腦工作,打算 要看到很多的二進制數字。 23 00:01:06,924 --> 00:01:11,660 而那些0和1的大型連鎖店 可以是非常困難的解析。 24 00:01:11,660 --> 00:01:16,610 我們不能只看一個字符串 0和1的和必要知道 25 00:01:16,610 --> 00:01:17,810 究竟它是什麼。 26 00:01:17,810 --> 00:01:21,980 但它仍然很有用,能夠 以同樣的方式明確數據 27 00:01:21,980 --> 00:01:23,480 一台計算機一樣。 28 00:01:23,480 --> 00:01:26,580 我們擁有的這個概念 十六進制系統,這是 29 00:01:26,580 --> 00:01:29,840 鹼,代替底座10或基體2 16,。 30 00:01:29,840 --> 00:01:34,420 這意味著我們有16位數字 用,而不是10或2至工作。 31 00:01:34,420 --> 00:01:37,180 它是一個更 簡潔的方式來表達 32 00:01:37,180 --> 00:01:41,210 在計算機系統上的二進制信息, 它更加人性理解的。 33 00:01:41,210 --> 00:01:43,520 因此,我們有數字 0至9,然後 34 00:01:43,520 --> 00:01:49,480 我們也有這些額外的6 digits--一個, B,C,D,E,和f,它們代表10, 35 00:01:49,480 --> 00:01:56,050 我們的10個概念,11,12, 13,14和15,以十進制。 36 00:01:56,050 --> 00:01:59,787 有時,順便說一句,你也 看到這些A到F的為大寫A 37 00:01:59,787 --> 00:02:01,620 至F,這是 這樣,我傾向於這樣做。 38 00:02:01,620 --> 00:02:04,560 這只是我的首選 風格,但無論是好的, 39 00:02:04,560 --> 00:02:07,870 他們都表示很 同樣的事情。 40 00:02:07,870 --> 00:02:09,090 >> 那麼,為什麼是十六進制很酷? 41 00:02:09,090 --> 00:02:11,580 為什麼我們需要用這個 其他附加的基礎? 42 00:02:11,580 --> 00:02:14,310 我們已經有2 10,為什麼我們需要16? 43 00:02:14,310 --> 00:02:21,650 井16是2的冪,所以 每個十六進制數字,0至f, 44 00:02:21,650 --> 00:02:25,440 對應於一個獨特的 順序,或者獨特的安排 45 00:02:25,440 --> 00:02:29,060 的4個二進制位,4位。 46 00:02:29,060 --> 00:02:34,570 所以在這個意義上,我們可以表達 很長的,複雜的,二進制數字 47 00:02:34,570 --> 00:02:36,440 在十六進制中 更簡潔的方式, 48 00:02:36,440 --> 00:02:41,080 不會丟失信息或具有至 做的特別繁瑣的轉換 49 00:02:41,080 --> 00:02:42,480 這些數字。 50 00:02:42,480 --> 00:02:44,880 >> 所以,正如我剛才所說, 每個十六進制數字 51 00:02:44,880 --> 00:02:48,630 對應於一個獨特的 4個二進制位的安排。 52 00:02:48,630 --> 00:02:53,670 所以二進制串0000 對應於十六進制數字0。 53 00:02:53,670 --> 00:03:00,340 0110對應十六進制數字6。 54 00:03:00,340 --> 00:03:05,225 與1111對應 為十六進制數字F。 55 00:03:05,225 --> 00:03:07,100 如果你正在尋找 這張圖,特別是 56 00:03:07,100 --> 00:03:09,099 如果你正在尋找的 圖表的左側, 57 00:03:09,099 --> 00:03:11,970 你已經可以看到有一個 一個模棱兩可的問題位在這裡。 58 00:03:11,970 --> 00:03:15,229 小數0是非常 從十六進制0別無二致, 59 00:03:15,229 --> 00:03:18,020 不是事實,這是在其他 一列,上面寫著十六進制。 60 00:03:18,020 --> 00:03:22,130 >> 但是,我們可能不會總是 有一個列有。 61 00:03:22,130 --> 00:03:25,420 一般來說,當我們表達 數字到十六進制 62 00:03:25,420 --> 00:03:28,130 明確區分 他們從十進制, 63 00:03:28,130 --> 00:03:31,860 我們通常前綴他們 與0x作為前綴。 64 00:03:31,860 --> 00:03:35,990 0X意味著什麼在現實中, 它只是一個線索,我們作為人類 65 00:03:35,990 --> 00:03:39,190 這就是我們即將看到, 或即將開始解析, 66 00:03:39,190 --> 00:03:40,750 是一個十六進制數。 67 00:03:40,750 --> 00:03:45,590 顯然對於較高位的a,b, C,D,和f,其對應於:10-15 68 00:03:45,590 --> 00:03:48,840 這是非常明確的是 這是一個十六進制數。 69 00:03:48,840 --> 00:03:51,620 而事實上,任何十六進制 一些有字母在裡面, 70 00:03:51,620 --> 00:03:54,642 可能是很明顯 以十六進制數。 71 00:03:54,642 --> 00:03:56,350 但是,儘管如此,對於 為了清楚起見,這是 72 00:03:56,350 --> 00:03:58,290 總是一個好主意 前綴每次 73 00:03:58,290 --> 00:04:01,835 參考數字為十六進制 通過前面加上一個0X號。 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> 因此,二進制,因為我們 說,有位值。 76 00:04:06,810 --> 00:04:10,040 還有那些地方,三三兩兩的地方, 一個四肢著地的地方,和八分的地方。 77 00:04:10,040 --> 00:04:13,640 和小數也有地方的價值觀,在 的,數十,數百,數千 78 00:04:13,640 --> 00:04:15,910 大家都可能記得 從小學。 79 00:04:15,910 --> 00:04:18,050 和十六進制是沒有 這裡的例外,真的。 80 00:04:18,050 --> 00:04:22,660 它也有位值,而是 被2的冪的10或權力, 81 00:04:22,660 --> 00:04:25,050 他們是16的權力。 82 00:04:25,050 --> 00:04:29,410 >> 於是我們看到了一些這樣的我們 很清楚的知道這是397,對不對? 83 00:04:29,410 --> 00:04:33,420 那麼,如果我們看到這樣一個數字, 我們知道這是不是397了。 84 00:04:33,420 --> 00:04:36,730 這是十六進制 第三十九個。 85 00:04:36,730 --> 00:04:39,680 這不是397,這意味著 不同的東西, 86 00:04:39,680 --> 00:04:44,180 因為我們使用的是16的所有權力 我們的位置值而不是權力 87 00:04:44,180 --> 00:04:45,560 10。 88 00:04:45,560 --> 00:04:50,570 事實上,這個地方的值這裡會 是那些地方,在sixteens的地方, 89 00:04:50,570 --> 00:04:55,080 與兩百五十西克西斯地方, 這符合我們的那些想法 90 00:04:55,080 --> 00:04:59,180 的地方,十位,和數百 地方,如果數為397。 91 00:04:59,180 --> 00:05:03,620 但因為它是0X 397,我們有 一個個位,sixteens的地方, 92 00:05:03,620 --> 00:05:05,780 和一個兩百五十亂七八糟的地方。 93 00:05:05,780 --> 00:05:09,460 或者,一個16到0的地方,這是1。 94 00:05:09,460 --> 00:05:12,420 甲16至第一電源的地方,16。 95 00:05:12,420 --> 00:05:17,080 一個16平方的地方,256, 等等,等等,等等。 96 00:05:17,080 --> 00:05:24,400 所以,這個數字實在是3次16 平方,再加上9次16,加7。 97 00:05:24,400 --> 00:05:28,980 我沒有做數學在這裡,但它不是 397,它是多,比大得多。 98 00:05:28,980 --> 00:05:34,050 >> 同樣,我們可以有0x的ADC, 那麼這是一個時代16平方。 99 00:05:34,050 --> 00:05:38,220 或者,如果我們把這種對我們的想法 十進制數,這是10倍 100 00:05:38,220 --> 00:05:44,160 16平方,加上d次 16,或加13倍16。 101 00:05:44,160 --> 00:05:47,410 如果你還沒有記憶,不用擔心 即d為13,之類的東西, 102 00:05:47,410 --> 00:05:49,201 有沒有太多的 這些字母數字 103 00:05:49,201 --> 00:05:52,820 它會成為 直觀的很快。 104 00:05:52,820 --> 00:05:59,800 所以,這同樣是10倍16平方, 加13倍16,加12倍1。 105 00:05:59,800 --> 00:06:03,640 所以0X ADC。 106 00:06:03,640 --> 00:06:07,750 >> 所以,正如我所說,每 組4個二進制位 107 00:06:07,750 --> 00:06:10,000 對應於一個單一 十六進制數字, 108 00:06:10,000 --> 00:06:12,570 因此它實際上是真的 容易改變來回 109 00:06:12,570 --> 00:06:14,690 之間的十六進制和二進制。 110 00:06:14,690 --> 00:06:18,310 如果你有這個長字符串 二進制數字,所有你需要做的 111 00:06:18,310 --> 00:06:21,320 在分組開始他們的權利 至左的4組。 112 00:06:21,320 --> 00:06:26,550 然後您可以整合 成十六進制數, 113 00:06:26,550 --> 00:06:30,910 嚴重地限制的數 數字你必須在精神上處理。 114 00:06:30,910 --> 00:06:33,680 代替32 0和1的, 我們將在第二次看到, 115 00:06:33,680 --> 00:06:37,630 你也許可以得到它下來 剛剛8位十六進制數字,很多 116 00:06:37,630 --> 00:06:39,200 更簡潔。 117 00:06:39,200 --> 00:06:43,500 >> 圖表幾張幻燈片後面會 幫你找出這種映射, 118 00:06:43,500 --> 00:06:45,660 雖然,再次你會 很快記住它。 119 00:06:45,660 --> 00:06:47,320 我們將通過一個例子,現在。 120 00:06:47,320 --> 00:06:51,507 因此,如果我們有一些像這樣, 這真的是大的二進制數, 121 00:06:51,507 --> 00:06:53,340 或者這似乎是 大量二進制數。 122 00:06:53,340 --> 00:06:56,260 而我之所以這麼說,這是 只是so--它是一個龐然大物,對不對? 123 00:06:56,260 --> 00:06:58,959 有這麼多的0和1的出現。 124 00:06:58,959 --> 00:07:01,000 但是,我們可能不 真的有感是什麼 125 00:07:01,000 --> 00:07:02,870 這個數字的大小確實是。 126 00:07:02,870 --> 00:07:06,150 我們沒有任何想法是什麼 將對應於小數。 127 00:07:06,150 --> 00:07:09,744 而事實上,我們甚至不會看到什麼 對應於十進制現在。 128 00:07:09,744 --> 00:07:11,660 我們也許能夠 的方式表達這一點, 129 00:07:11,660 --> 00:07:15,640 可以給我們一些更多的信息 關於到底有多大這個數字。 130 00:07:15,640 --> 00:07:17,270 >> 因此,讓我們去的轉換過程。 131 00:07:17,270 --> 00:07:19,311 我們需要做的第一件事 做的是我們要組 132 00:07:19,311 --> 00:07:23,050 這些數字出成組 4,從右側開始 133 00:07:23,050 --> 00:07:24,120 和工作到左邊。 134 00:07:24,120 --> 00:07:27,260 這裡正好是32位 在這裡,這意味著我們有 135 00:07:27,260 --> 00:07:33,210 8組,每組4一個很好的徹底決裂。 136 00:07:33,210 --> 00:07:36,200 請記住,每個組 4在這裡,唯一對應 137 00:07:36,200 --> 00:07:37,760 一個十六進制數字。 138 00:07:37,760 --> 00:07:42,080 因此,我們將重新開始建設我們 從右邊數和工作離開了。 139 00:07:42,080 --> 00:07:44,890 那麼什麼是1101? 140 00:07:44,890 --> 00:07:49,220 那麼我們做數學題在我們的頭上, 我們有1在八分的地方,一個1 141 00:07:49,220 --> 00:07:54,310 在四肢著地的地方,一個0的三三兩兩 的地方,和一個1中的那些地方。 142 00:07:54,310 --> 00:07:58,820 這是8加4加1, 我們會知道的13。 143 00:07:58,820 --> 00:08:02,400 但是,我們可能不會寫13個, 因為我們正在使用十六進制。 144 00:08:02,400 --> 00:08:07,982 我們需要將其轉換為十六進制 當量為13,其為d。 145 00:08:07,982 --> 00:08:12,940 >> 0011,那麼這是一個0, 八分的地方,一個0四肢著地的地方, 146 00:08:12,940 --> 00:08:15,190 1,在三三兩兩的地方, 和一個1中的那些地方。 147 00:08:15,190 --> 00:08:16,880 這是3。 148 00:08:16,880 --> 00:08:20,180 我的意思是繼續這樣做 再次,我們這裡有9。 149 00:08:20,180 --> 00:08:23,850 然後11,但這是B,召回。 150 00:08:23,850 --> 00:08:30,570 2,10--或A-- 6和4。 151 00:08:30,570 --> 00:08:34,669 而這樣非常大的字符串 的0和1的頂部的 152 00:08:34,669 --> 00:08:38,549 更簡潔的表達 十六進制的0X 46a2b93d。 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> 好了,好了,我們已經學到了新的 酷技巧,有什麼意義呢? 155 00:08:45,870 --> 00:08:49,560 我們可能不會用這一切的 時間的推移,我們將很快看到, 156 00:08:49,560 --> 00:08:52,370 我們用十六進制相當 很多程序員。 157 00:08:52,370 --> 00:08:55,060 不一定是 做數學有它的目的, 158 00:08:55,060 --> 00:08:58,470 但由於很多次 在我們的系統內存地址 159 00:08:58,470 --> 00:09:00,440 以十六進制表示。 160 00:09:00,440 --> 00:09:04,390 這是一個非常簡潔的方式來表達 否則麻煩,二進制數。 161 00:09:04,390 --> 00:09:06,440 所以,再一次,你可以 不是 - 你可能 162 00:09:06,440 --> 00:09:07,640 不會做任何數學 有了它,你是不是 163 00:09:07,640 --> 00:09:09,848 將是乘法 十六進制數字加在一起, 164 00:09:09,848 --> 00:09:11,770 或做任何奇怪之類的。 165 00:09:11,770 --> 00:09:16,120 但它是一個有用的技能有 這樣你就可以表達和理解 166 00:09:16,120 --> 00:09:23,290 存儲器地址和其他 C.中使用數據的方式 167 00:09:23,290 --> 00:09:26,240 >> 我是道格·勞埃德,這是CS50。 168 00:09:26,240 --> 00:09:28,028