6.1 为什么需要八进制和十六进制? 编程中,我们常用的还是10 进制⋯⋯必竟C/C++是高级语言。比如:int a = 100,b = 99。不过,因为数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。但,二进制数太长了。比如int 类型占用 4 个字节, 32 位。比如 100,用 int类型的二进制数表达将是:0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。用 16 进制或 8 进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16 或 8 进制,而不其它的,诸如9 或 20 进制呢?2、8、16,分别是2 的 1 次方, 3 次方, 4 次方。这一点使得三种进制之间可以非常直接地互相转换。8 进制或 16 进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。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 = 1000 乘以多少都是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 +...