6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制数 二进制数第 0 位的权值是 2 的 0 次方,第 1 位的权值是 2 的 1 次方…… 所以,设有一个二进制数:0110 0100,转换为 10 进制为: 下面是竖式: 0110 0100 换算成 十进制 第 0 位 0 * 20 = 0 第 1 位 0 * 21 = 0 第 2 位 1 * 22 = 4 第 3 位 0 * 23 = 0 第 4 位 0 * 24 = 0 第 5 位 1 * 25 = 32 第 6 位 1 * 26 = 64 第 7 位 0 * 27 = 0 + --------------------------- 100 用横式计算为: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 0 乘以多少都是 0,所以我们也可以直接跳过值为 0 的位: 1 * 22 + 1 * 23 + 1 * 25 + 1 * 26 = 100 6.2.2 八进制数转换为十进制数 八进制就是逢8 进1。 八进制数采用 0~7 这八数来表达一个数。 八进制数第 0 位的权值为8 的 0 次方,第 1 位权值为8 的 1 次方,第 2 位权值为8 的 2 次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507 换算成十进制。 第 0 位 7 * 80 = 7 第 1 位 0 * 81 = 0 第 2 位 5 * 82 = 320 第 3 位 1 * 83 = 512 + -------------------------- 839 同样,我们也可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 结果是,八进制数 1507 转换成十进制数为 839 6.2.3 八进制数的表达方法 C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7 以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10 进制数,都有可能。 所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123 是十进制,但0123 则表示采用八进制。这就是八进制数在 C、C++中的表达方法。 由于 C 和 C++都没有提供二进制数的表达方法,所以,这里所学的八进制是我们学习的,CtC++语言的数值表达的第二种进制法。 现在,对于同样一个数,比如是100,我们在代码中可以用平常的10 进制表达,例如在变量初始化时: int a = 100; 我们也可以这样写: int a = 0144; //0144 是八进制的1...