GESP 三级 第 01 讲:进制转换(二 / 八 / 十 / 十六)

本讲定位:三级的第一讲,也是三级三大新常识块(进制 → 编码 → 位运算)的地基。官方大纲把「二进制、八进制、十进制、十六进制」列为三级知识块 2,在客观题里几乎每套必考,且不止一道。这一讲没有任何算法难度,全部是手算 + 背表,但它决定了后面第 02 讲(原码反码补码)和第 03 讲(位运算)能不能听懂——那两讲的每一个概念都写在二进制上。

对应官方大纲:三级知识块 2「进制转换」——二进制、八进制、十进制、十六进制。

前置知识:一级第 05 讲(整除与求余——本讲的除基取余法全靠 / 和 %)、一级第 08 讲(循环)、二级第 04 讲(ASCII 编码)。

代码说明:本讲所有代码均已用 g++ 11.5(-std=c++11)编译运行验证,输出结果即为文中标注结果。


1. 先看三道真题

第一道(单选):

十进制数 $45$ 转换为二进制数是( ) A. 101101 B. 110101 C. 101011 D. 111001

第二道(单选):

二进制数 11011010 转换为十六进制数是( ) A. AD B. DA C. BC D. 1A2

第三道(判断):

C++ 中,int a = 010; 执行后 a 的值是 $10$。( )

答案:第一道选 A,第二道选 B,第三道错误(a 的值是 8)。

这三道题分别对应本讲的三块内容:十进制转出去、二进制与十六进制互转、C++ 里怎么写和怎么输出各种进制。


2. 为什么计算机非要用二进制

一句话:因为电路只分得清”通”和”断”两种状态。

十进制 二进制
用到的数字 0~9,共 10 个 0、1,共 2 个
硬件如何表示 需要区分 10 种电压等级 只需区分”有电/ 没电”
可靠性 电压稍有波动就认错 极难认错

📌 官方常考的措辞:计算机内部一切数据(数字、字符、图片、声音)最终都以二进制形式存储。选择题里出现”计算机中的数据以十进制存储”一定是错的。

💡 那既然二进制这么好,为什么还要八进制和十六进制?因为二进制太长,人读不了。 一个 int 是 32 位二进制,写出来一行都放不下;换成十六进制只要 8 位。八进制和十六进制是给人看的二进制缩写,不是计算机内部的另一套存储方式。


3. 「进制」到底是什么:位权展开

任何进制都遵守同一条规则:每一位的值 = 这一位的数字 × 这一位的位权,位权是基数的幂,从右往左依次是 $0$ 次、$1$ 次、$2$ 次……