第二章 计算机基础知识:发展史、数制转换、数据表示与字符编码

计算机基础知识是军队文职计算机岗位的基石,无论是硬件维护、软件开发还是信息安全保障,都离不开对计算机底层原理的理解。本章围绕四条主线展开:计算机发展史(了解技术演进脉络)、数制转换(掌握二进制与多进制运算)、数据表示(理解原码、反码、补码的运算规则)、字符编码(熟悉ASCII与Unicode体系)。这四部分内容在考试中约占基础分值的15%-20%,且常以混合题型出现,例如给出一个十进制数要求转换为补码形式,或判断某字符的ASCII码值。

计算机基础知识四大核心模块关联图 计算机发展史 电子管→晶体管→ 集成电路→超大规模 冯·诺依曼体系 存储程序控制 数制转换 二进制/八进制/十进制 十六进制互转 按权展开法 除基取余法 数据表示 原码/反码/补码 定点数/浮点数 补码运算优势 符号位统一处理 字符编码 ASCII(7位/8位) Unicode/UTF-8 编码兼容性 汉字编码方案 基础 核心 应用场景:系统运维 · 网络配置 · 信息安全 · 软件开发 IP地址计算(二进制) · 权限管理(补码溢出判断) · 日志分析(字符编码识别) 📌 考试高频考点: ① 补码的加减运算规则(符号位参与运算) ② 二进制与十六进制快速转换(8421法)

2.1 计算机发展史:从电子管到人工智能

2.1.1 核心原理:四代计算机的划分依据

计算机发展史的划分标准是逻辑元器件的变革。每一代计算机的更新都带来了体积、功耗、速度的指数级变化。军队文职考试中常以选择题或填空题形式考查各代计算机的代表机型与特征。

代次 时间范围 逻辑器件 软件发展 典型应用
第一代 1946-1957 电子管 机器语言、汇编语言 科学计算(弹道计算)
第二代 1958-1964 晶体管 高级语言(FORTRAN、COBOL) 数据处理、工业控制
第三代 1965-1970 中小规模集成电路 操作系统、多道程序设计 军事指挥系统、数据库
第四代 1971至今 大规模/超大规模集成电路 网络操作系统、面向对象 个人计算机、互联网、AI

需要特别关注的是冯·诺依曼体系结构,其核心思想是“存储程序控制”——将指令和数据以二进制形式预先存入存储器,计算机自动逐条执行。这一思想至今仍是绝大多数计算机的设计基础。考试中常要求指出冯·诺依曼体系的五大部件:运算器、控制器、存储器、输入设备、输出设备。

记忆口诀:“冯氏五部件,运算控制存输输;二进制存储,程序控制行。”

2.1.2 判断方法:区分各代计算机的关键指标

判断某台计算机属于第几代,不能只看外观或品牌,而应抓住核心逻辑器件这一本质特征。例如,虽然2020年生产的军用加固计算机仍可能使用某些特殊工艺的电子管(用于抗电磁脉冲),但主流判断仍以集成电路为标准。考试中若给出“采用中小规模集成电路”的描述,应直接对应第三代。

2.1.3 案例拆解:从ENIAC到国产超算

1946年诞生的ENIAC(电子数字积分计算机)占地170平方米,重30吨,耗电150千瓦,每秒仅能执行5000次加法。而我国“神威·太湖之光”超级计算机峰值性能已达每秒12.5亿亿次。这一对比说明:计算机性能的提升本质上是逻辑器件集成度提升的结果。在军事应用中,从早期的火控计算机到今天的战场数据链终端,都遵循着同样的演进逻辑。

2.1.4 常见误区与复盘

  • 误区一:认为“第四代计算机=人工智能计算机”。实际上第四代至今仍是主流,AI只是其上的应用方向。
  • 误区二:混淆“集成电路”与“晶体管”的代次归属。晶体管是第二代,集成电路是第三代。
  • 误区三:忽略我国计算机发展历程。如“银河-I”亿次机(1983年)属于第四代,标志我国进入超算领域。

2.2 数制转换:二进制的核心地位

2.2.1 核心原理:为什么计算机采用二进制

计算机内部采用二进制的原因有三:物理实现容易(电平高低、开关通断)、运算规则简单(0和1的布尔代数)、抗干扰能力强(只有两个状态,容差范围大)。在军事环境中,二进制信号在复杂电磁环境下更稳定,这也是军用计算机坚持底层二进制设计的原因之一。

常用数制包括:二进制(B)、八进制(O/Q)、十进制(D)、十六进制(H)。其中八进制和十六进制是二进制的压缩表示,便于人类阅读和书写。

2.2.2 转换方法:三大核心算法

方法一:按权展开法(任意进制→十进制)
将每位数字乘以该位的权值(基数^位置序号),然后求和。例如:

(1101.01)₂ = 1×2³ + 1×2² + 0×2¹ + 1×2⁰ + 0×2⁻¹ + 1×2⁻²
             = 8 + 4 + 0 + 1 + 0 + 0.25
             = (13.25)₁₀

方法二:除基取余法(十进制→任意进制)
整数部分不断除以目标基数,取余数逆序排列;小数部分不断乘以目标基数,取整数顺序排列。以十进制数25转换为二进制为例:

25 ÷ 2 = 12 余 1 ↑
12 ÷ 2 = 6  余 0 ↑
6  ÷ 2 = 3  余 0 ↑
3  ÷ 2 = 1  余 1 ↑
1  ÷ 2 = 0  余 1 ↑
结果:(11001)₂

方法三:分组转换法(二进制↔八进制/十六进制)
二进制转八进制:从小数点开始,整数部分向左、小数部分向右,每3位一组,不足补0,每组转换为对应八进制数。
二进制转十六进制:每4位一组,转换为对应十六进制数(10→A,11→B,…,15→F)。

实战技巧:十六进制与二进制转换可用“8421码”快速心算。例如十六进制数 3A:3→0011,A(10)→1010,所以 (3A)₁₆ = (00111010)₂。

2.2.3 案例拆解:IP地址与子网掩码的二进制运算

在军队网络运维中,IP地址配置是日常操作。例如将十进制IP地址 192.168.1.100 转换为二进制:

192 → 11000000
168 → 10101000
1   → 00000001
100 → 01100100
完整二进制:11000000.10101000.00000001.01100100

子网掩码 255.255.255.0 的二进制为 11111111.11111111.11111111.00000000。将IP与掩码逐位相与(AND),即可得到网络地址 192.168.1.0。这一过程在考试中常以计算题出现,要求考生快速完成二进制转换与逻辑运算。

2.2.4 常见误区与复盘

  • 误区一:小数转换时忘记“乘基取整”的顺序是正序,而整数转换是逆序。
  • 误区二:二进制转十六进制时分组方向错误。必须从小数点向两侧分组,而不是从最左端开始。
  • 误区三:忽略八进制和十六进制的字母表示。例如将十六进制的 0x1F 误读为“一五”。

2.3 数据表示:原码、反码与补码

2.3.1 核心原理:三种机器数的定义与关系

在计算机中,带符号数有三种表示方法。设机器字长为n位(含1位符号位),真值X的表示如下:

表示方法 正数(X≥0) 负数(X≤0) 示例(n=8,X=-5)
原码 符号位0 + 值二进制 符号位1 + 值二进制 10000101
反码 同原码 符号位不变,数值位按位取反 11111010
补码 同原码 反码末位加1 11111011

补码的核心优势在于:将减法运算转化为加法运算,且符号位可以参与运算,无需单独判断符号。例如计算 7 - 5,在计算机中实际执行 7 + (-5) 的补码加法:

7的补码:  00000111
-5的补码: 11111011
相加:    100000010(最高位溢出丢弃,保留8位)
结果:    00000010 = (2)₁₀ ✓

2.3.2 判断方法:快速求补码的“取反加一”法则

已知一个负数的原码,求补码的步骤:符号位不变,数值位逐位取反,末位加1。反之,已知补码求真值:若符号位为0,直接转换;若符号位为1,则取反加一得到原码,再转换为十进制并加负号。

易错提醒:补码的“取反加一”是对整个数值位操作,不包括符号位。例如 -128 的补码是 10000000(8位),这是特殊情形,其原码和反码在8位范围内无法表示。

2.3.3 案例拆解:补码溢出判断

在军事测控系统中,传感器数据可能超出预设范围。假设8位补码表示范围是 -128~127。若计算 100 + 50:

100的补码:01100100
50的补码: 00110010
相加:     10010110(符号位变为1,结果负数)
实际值:   10010110 → 取反加一 → 01101010 = 106,即 -106
正确结果应为150,但超出127,产生溢出。

溢出判断规则:两个正数相加得到负数,或两个负数相加得到正数,即为溢出。硬件上可通过“最高位进位与次高位进位异或”来判断。

2.3.4 常见误区与复盘

  • 误区一:认为补码的符号位不能参与运算。实际上补码设计的目的就是让符号位参与运算。
  • 误区二:混淆反码与补码的转换步骤。反码是“取反”,补码是“取反加一”。
  • 误区三:忽略补码的模运算本质。补码实际上是“模2^n”下的同余表示,理解这一点有助于解释溢出问题。

2.4 字符编码:ASCII与Unicode体系

2.4.1 核心原理:从ASCII到Unicode的演进

ASCII码(美国信息交换标准代码)使用7位二进制数(最高位为0),共128个字符,包括:控制字符(0-31)、标点符号、数字(48-57对应'0'-'9')、大写字母(65-90对应'A'-'Z')、小写字母(97-122对应'a'-'z')。扩展ASCII使用8位,增加128个字符,但不同厂商定义不同,导致兼容性问题。

Unicode(统一码)为全球所有文字字符分配唯一编号,目前超过14万个字符。其实现方式有多种,最常用的是UTF-8编码:

Unicode范围(十六进制) UTF-8字节数 编码格式
0000-007F 1字节 0xxxxxxx(兼容ASCII)
0080-07FF 2字节 110xxxxx 10xxxxxx
0800-FFFF 3字节 1110xxxx 10xxxxxx 10xxxxxx
10000-10FFFF 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

2.4.2 判断方法:字符编码的识别与转换

在日志分析或文本处理中,遇到乱码时需判断编码类型:若文件以EF BB BF开头,则为UTF-8带BOM格式;若以FF FE开头,则为UTF-16 LE;若全为单字节且值小于128,则为纯ASCII。在Linux系统中可用 file 命令或 hexdump 查看文件头字节。

2.4.3 案例拆解:中文字符编码实战

汉字“军”的Unicode码点为U+519B。其UTF-8编码计算过程:

0x519B = 0101 0001 1001 1011(16位)
落在0800-FFFF范围,需3字节:
格式:1110xxxx 10xxxxxx 10xxxxxx
拆分:0101 000110 011011
填充:11100101 10000110 10011011
十六进制:E5 86 9B

因此“军”在UTF-8中存储为 E5 86 9B。而在GB2312/GBK编码中,“军”的编码为 BEFC。这种差异在跨系统数据传输中常导致乱码,需通过编码转换工具处理。

考试要点:数字字符的ASCII码规律——'0'=48,'A'=65,'a'=97。记住这三个基准值,可快速推算任意数字/字母的ASCII码。例如'F'=65+5=70,'m'=97+12=109。

2.4.4 常见误区与复盘

  • 误区一:认为Unicode就是UTF-8。Unicode是字符集(编号规则),UTF-8是编码方案(存储规则)。
  • 误区二:混淆ASCII码与扩展ASCII。标准ASCII只有7位128个字符,扩展ASCII是8位256个字符。
  • 误区三:忽略大小写字母ASCII码的差值固定为32。'a'-'A'=32,可用于大小写转换的快速计算。

2.5 综合实战:基础知识的联合应用

在军队文职计算机岗位的实际工作中,上述知识往往综合运用。例如,在配置网络设备时,需要将IP地址(十进制)转换为二进制进行子网划分;在分析系统日志时,需要识别不同字符编码;在调试嵌入式设备时,需要理解补码运算对传感器数据的处理。

综合案例:某型雷达数据采集系统返回的原始数据为十六进制字节流 F6 3A 8B。要求:①判断各字节的二进制形式;②若第一个字节为补码表示的带符号数,求真值;③若该字节流为UTF-8编码的文本,判断是否为合法中文字符。

① F6 = 11110110,3A = 00111010,8B = 10001011
② F6补码:符号位1,取反加一 → 00001010 = 10,真值为 -10
③ F6 3A 8B:F6(11110110) 以11110开头,应为4字节UTF-8的首字节,
   但后续字节需以10开头,3A(00111010)不符合,故不是合法UTF-8序列。

此类综合题在考试中分值较高(约8-10分),需要考生熟练运用数制转换、补码计算和编码判断三项技能。建议在复习时多做跨章节的混合练习,将四个知识模块串联起来。

复习建议:本章内容建议用时3-4小时。第一遍通读建立框架,第二遍重点练习数制转换和补码计算(每天20道题),第三遍结合历年真题检验掌握程度。字符编码部分需动手用Python或Linux命令验证编码结果,加深理解。