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