DOUG LLYOYD:所以十六进制数, 好像我们需要另一个基数 方案对不对? 那么,大多数西方文化, 正如你可能很熟悉, 使用十进制系统 - 基础 10,来表示数字数据。 我们有数字0, 1,2,3,5,6,7,8,9。 如果我们需要表示 值超过九高, 我们可以将这些数字 使用位值的概念。 因此,对于10,我们有一个1 数字其次是0位 我们直观地理解 这就是我们正在做的 还有我们乘 第1次10, 然后加入0共计10。 计算机做一些漂亮 类似的,因为你可能熟悉, 与二进制系统 - 基座2。 所不同的是有 仅存在2位 工作with-- 0和1。 所以我们的地方价值, 而不是被之一, 十,百,千,因为他们 将在十进位制, 是一,二,四,八,等等。 这里的东西虽然, 那些0和1的,特别是 如果我们是计算机科学家 而且我们做了很多节目 或使用电脑工作,打算 要看到很多的二进制数字。 而那些0和1的大型连锁店 可以是非常困难的解析。 我们不能只看一个字符串 0和1的和必要知道 究竟它是什么。 但它仍然很有用,能够 以同样的方式明确数据 一台计算机一样。 我们拥有的这个概念 十六进制系统,这是 碱,代替底座10或基体2 16,。 这意味着我们有16位数字 用,而不是10或2至工作。 它是一个更 简洁的方式来表达 在计算机系统上的二进制信息, 它更加人性理解的。 因此,我们有数字 0至9,然后 我们也有这些额外的6 digits--一个, B,C,D,E,和f,它们代表10, 我们的10个概念,11,12, 13,14和15,以十进制。 有时,顺便说一句,你也 看到这些A到F的为大写A 至F,这是 这样,我倾向于这样做。 这只是我的首选 风格,但无论是好的, 他们都表示很 同样的事情。 那么,为什么是十六进制很酷? 为什么我们需要用这个 其他附加的基础? 我们已经有2 10,为什么我们需要16? 井16是2的幂,所以 每个十六进制数字,0至f, 对应于一个独特的 顺序,或者独特的安排 的4个二进制位,4位。 所以在这个意义上,我们可以表达 很长的,复杂的,二进制数字 在十六进制中 更简洁的方式, 不会丢失信息或具有至 做的特别繁琐的转换 这些数字。 所以,正如我刚才所说, 每个十六进制数字 对应于一个独特的 4个二进制位的安排。 所以二进制串0000 对应于十六进制数字0。 0110对应十六进制数字6。 和第1111对应 为十六进制数字F。 如果你正在寻找 这张图,特别是 如果你正在寻找的 图表的左侧, 你已经可以看到有一个 一个模棱两可的问题位在这里。 小数0是非常 从十六进制0别无二致, 不是事实,这是在其他 一列,上面写着十六进制。 但是,我们可能不会总是 有一个列有。 一般来说,当我们表达 数字到十六进制 明确区分 他们从十进制, 我们通常前缀他们 与0x作为前缀。 0X意味着什么在现实中, 它只是一个线索,我们作为人类 这就是我们即将看到, 或即将开始解析, 是一个十六进制数。 显然对于较高位的a,b, C,D,和f,其对应于:10-15 这是非常明确的是 这是一个十六进制数。 而事实上,任何十六进制 一些有字母在里面, 可能是很明显 以十六进制数。 但是,尽管如此,对于 为了清楚起见,这是 总是一个好主意 前缀每次 参考数字为十六进制 通过前面加上一个0X号。 因此,二进制,因为我们 说,有位值。 还有那些地方,三三两两的地方, 一个四肢着地的地方,和八分的地方。 和小数也有地方的价值观,在 的,数十,数百,数千 大家都可能记得 从小学。 和十六进制是没有 这里的例外,真的。 它也有位值,而是 被2的幂的10或权力, 他们是16的权力。 于是我们看到了一些这样的我们 很清楚的知道这是397,对不对? 那么,如果我们看到这样一个数字, 我们知道这是不是397了。 这是十六进制 第三十九个。 这不是397,这意味着 一些不同, 因为我们使用的是16的所有权力 我们的位置值而不是权力 10。 事实上,这个地方的值这里会 是那些地方,在sixteens的地方, 与两百五十西克西斯地方, 这符合我们的那些想法 的地方,十位,和数百 地方,如果数为397。 但因为它是0X 397,我们有 一个个位,sixteens的地方, 和一个两百五十乱七八糟的地方。 或者,一个16到0的地方,这是1。 甲16至第一电源的地方,16。 一个16平方的地方,256, 等等,等等,等等。 所以,这个数字实在是3次16 平方,再加上9次16,加7。 我没有做数学在这里,但它不是 397,它是多,比大得多。 同样,我们可以有0x的ADC, 那么这是一个时代16平方。 或者,如果我们把这种对我们的想法 十进制数,这是10倍 16平方,加上d次 16,或加13倍16。 如果你还没有记忆,不用担心 即d为13,之类的东西, 有没有太多的 这些字母数字 它会成为 直观的很快。 所以,这同样是10倍16平方, 加13倍16,加12倍1。 所以0X ADC。 所以,正如我所说,每 组4个二进制位 对应于一个单一 十六进制数字, 因此它实际上是真的 容易改变来回 之间的十六进制和二进制。 如果你有这个长字符串 二进制数字,所有你需要做的 在分组开始他们的权利 至左的4组。 然后您可以整合 成十六进制数, 严重地限制的数 数字你必须在精神上处理。 代替32 0和1的, 我们将在第二次看到, 你也许可以得到它下来 刚刚8位十六进制数字,很多 更简洁。 图表几张幻灯片后面会 帮你找出这种映射, 虽然,再次你会 很快记住它。 我们将通过一个例子,现在。 因此,如果我们有一些像这样, 这真的是大的二进制数, 或者这似乎是 大量二进制数。 而我之所以这么说,这是 只是so--它是一个庞然大物,对不对? 有这么多的0和1的出现。 但是,我们可能不 真的有感是什么 这个数字的大小确实是。 我们没有任何想法是什么 将对应于小数。 而事实上,我们甚至不会看到什么 对应于十进制现在。 我们也许能够 的方式表达这一点, 可以给我们一些更多的信息 关于到底有多大这个数字。 因此,让我们去的转换过程。 我们需要做的第一件事 做的是我们要组 这些数字出成组 4,从右侧开始 和工作到左边。 这里正好是32位 在这里,这意味着我们有 8组,每组4一个很好的彻底决裂。 请记住,每个组 4在这里,唯一对应 一个十六进制数字。 因此,我们将重新开始建设我们 从右边数和工作离开了。 那么什么是1101? 那么我们做数学题在我们的头上, 我们有1在八分的地方,一个1 在四肢着地的地方,一个0的三三两两 的地方,和一个1中的那些地方。 这是8加4加1, 我们会知道的13。 但是,我们可能不会写13个, 因为我们正在使用十六进制。 我们需要将其转换为十六进制 当量为13,其为d。 0011,那么这是一个0, 八分的地方,一个0四肢着地的地方, 1,在三三两两的地方, 和一个1中的那些地方。 这是3。 我的意思是继续这样做 再次,我们这里有9。 然后11,但这是B,召回。 2,10--或A-- 6和4。 而这样非常大的字符串 的0和1的顶部的 更简洁的表达 十六进制的0X 46a2b93d。 好了,好了,我们已经学到了新的 酷技巧,有什么意义呢? 我们可能不会用这一切的 时间的推移,我们将很快看到, 我们用十六进制相当 很多程序员。 不一定是 做数学有它的目的, 但由于很多次 在我们的系统内存地址 以十六进制表示。 这是一个非常简洁的方式来表达 否则麻烦,二进制数。 所以,再一次,你可以 不是 - 你可能 不会做任何数学 有了它,你是不是 将是乘法 十六进制数字加在一起, 或做任何奇怪之类的。 但它是一个有用的技能有 这样你就可以表达和理解 存储器地址和其他 C.中使用数据的方式 我是道格·劳埃德,这是CS50。