03 进制转换详解

二进制转十六进制的详细步骤

在考研 408(计算机学科专业基础综合)中,进制问题是计算机组成原理模块的核心基础内容,主要涉及二进制、八进制、十进制、十六进制的转换,以及它们在计算机数据表示(如原码、反码、补码、浮点数)和运算(如加减运算、溢出判断)中的应用。以下从考试角度详细解析进制问题的核心考点和理解要点。

一、进制转换的核心考点(必须熟练掌握)

1. 二进制 ↔ 十六进制

  • 二进制转十六进制:从右向左每 4 位一组(不足补 0),每组转换为 1 位十六进制数。 0000 0000 0000 0000 0000 0000 0111 1111 → 每 4 位分组为 0000 0000 0000 0000 0000 0000 0111 1111,对应十六进制为 00 00 00 7F,即 0x0000007F
  • 十六进制转二进制:每 1 位十六进制数展开为 4 位二进制数(不足补 0)。 0x7F → 0111 1111

2. 二进制 ↔ 十进制

  • 二进制转十进制:按权展开求和。 :二进制1011 = \(1×2^3 + 0×2^2 + 1×2^1 + 1×2^0 = 11\)。
  • 十进制转二进制
    • 整数部分:除 2 取余,逆序排列。
    • 小数部分:乘 2 取整,顺序排列(注意可能无限循环,需按精度截断)。 :十进制13 → 二进制1101

3. 二进制 ↔ 八进制

  • 二进制转八进制:从右向左每 3 位一组(不足补 0),每组转换为 1 位八进制数。
  • 八进制转二进制:每 1 位八进制数展开为 3 位二进制数(不足补 0)。 :八进制077 → 二进制111111

4. 有符号数的进制转换(补码为核心)

  • 计算机中整数通常以补码形式存储,转换时需注意符号位:
    • 正数:原码 = 反码 = 补码,直接转换。
    • 负数:先求绝对值的二进制,再取反加 1 得到补码。 :十进制-1的 8 位补码为 11111111(二进制),对应十六进制0xFF

二、考研重点:进制与计算机数据表示

1. 定点数的表示与运算

  • 原码、反码、补码的范围
03 进制转换详解
  • 溢出判断(核心考点)
    • 加法溢出:两个同符号数相加,结果符号与原符号相反,则溢出。 :8 位补码中,127(01111111) + 1(00000001)= 10000000(-128),符号位从 0 变 1,溢出。
    • 减法溢出:两个异符号数相减,结果符号与被减数符号相反,则溢出。
    • 进位法:最高位进位与符号位进位不同则溢出(适用于补码运算)。

2. 浮点数的规格化表示(IEEE 754 标准)

  • 浮点数格式:符号位 (S) + 阶码 (E) + 尾数 (M)。
  • 进制转换步骤
    1. 将十进制数转换为二进制(如10.5 → 1010.1)。
    2. 规格化:移动小数点使尾数首位为 1(如1.0101×2^3)。
    3. 计算阶码:偏移后的值(如单精度阶码偏移量 127,3+127=130→10000010)。
    4. 尾数:去掉首位 1,保留小数部分(如0101补零至 23 位)。
  • 10.5的单精度浮点数二进制表示为: 0(符号位) 10000010(阶码) 01010000000000000000000(尾数),对应十六进制0x41480000

三、典型题型与解题思路

1. 进制转换与补码运算

例题:若 8 位补码表示的二进制数为10101010,其对应的十进制数是多少? 解析

  • 符号位为 1,负数,需求原码: 补码10101010 → 减 1 得反码10101001 → 取反得原码11010110(绝对值为106)。
  • 结果:-106

2. 溢出判断

例题:8 位补码中,计算98 + (-64)是否溢出? 解析

  • 98补码:01100010-64补码:11000000
  • 相加:01100010 + 11000000 = 10010010(符号位为 1,结果为负数)。
  • 实际结果:98-64=34(正数),但计算结果为负数,说明溢出(原因:8 位补码范围为 – 128~127,98+(-64)=34未溢出,此处可能题目设计错误,需注意实际运算逻辑)。 注:实际计算中,98+(-64)=34未超范围,无溢出,需警惕题目陷阱(如是否为无符号数)。

3. 浮点数规格化

例题:将十进制数-0.375转换为单精度浮点数的十六进制表示。 解析

  • -0.375二进制:-0.011 → 规格化:-1.1×2^-2
  • 符号位:1。
  • 阶码:-2 + 127 = 125 → 01111101
  • 尾数:去掉首位 1,剩余1补零至 23 位:10000000000000000000000
  • 二进制表示:1 01111101 10000000000000000000000 → 十六进制:0xBE800000

四、备考建议

  1. 熟练掌握转换技巧
    • 二进制与十六进制的快速转换(四位一组)是核心,需做到眼算无误。
    • 补码与十进制的互转需结合符号位和取反加 1 规则。
  2. 理解溢出本质
    • 溢出仅发生在有符号数运算中,无符号数超过范围时仅产生进位 / 借位,不叫溢出。
    • 用 “符号位变化” 或 “进位异或” 法快速判断溢出。
  3. 结合真题训练
    • 分析历年真题中进制相关题目(如 2017 年第 3 题、2020 年第 4 题),总结出题规律(如浮点数规格化、补码运算溢出)。
  4. 注意细节陷阱
    • 无符号数与有符号数的区别(如0xFF作为无符号数是 255,作为补码是 – 1)。
    • 浮点数的隐藏位(如 IEEE 754 单精度尾数隐含首位 1)。

五、总结

进制问题在考研 408 中虽基础,但贯穿计算机组成原理的核心知识点(如数据表示、运算器设计)。复习时需将进制转换与补码、浮点数、溢出判断等结合,避免孤立记忆转换方法。通过大量例题练习,培养 “看到二进制数即联想到补码值、看到浮点数即拆解为三部分” 的思维习惯,才能在考试中快速准确作答。

本网站原创文章版权归何大锤的狂飙日记所有。发布者:何大锤,转转请注明出处:何大锤的博客

(0)
何大锤的头像何大锤管理团队

相关推荐

  • 第二章数据结构线性表 – 带头结点的单链表

    一、单链表的定义和表示 – 带头结点的单链表 1、定义 单链表是由表头唯一确定,因此单链表可以用头指针的名字来命名 若头指针名是L,则把链表称为表L 2、单链表的存储结构 二、单链表基本操作的算法实现 – 带头结点的单链表 2.1 单链表的初始化 2.2 判断一个链表是否为空 一、带头结点的单链表代码实现 共6种函数代码 三、头插法创…

    9小时前
    200
  • 第二章数据结构线性表 – 单链表定义

    一、引言 1.1 知识框架 1.2 有了数组为什么还要链表? 在前面我们介绍过数组,数组中元素是存储在连续的内存位置在声明数组时,我们可以指定数组的大小,但这将限制数组可以存储的元素数量 例如我们声明的是 int arr[10],那么arr数组最多可以存储10个数据元素 但是我们事先不知道元素的大小呢? 我们该如何去做? 当然首先想到的是申请一个足够大的数组…

    12小时前
    200
  • 04 程序流程结构

    C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构 循环结构:依据条件是否满足,循环多次执行某段代码 顺序结构:程序按顺序执行,不发生跳转 选择结构:依据条件是否满足,有选择的执行相应功能 4.1 选择结构 4.1.1 if语句 作用:执行满足条件的语句 if语句的三种形式 示例: 注意:if条件表达式后不要加分号 示例: 示例: 嵌套if…

    4天前
    300
  • 初始C语言01

    0、什么是C语言? C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MC…

    5天前
    000
  • 01 你好Python

    一、课件

    5天前
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

2211932694

在线咨询: QQ交谈

邮件:hdcblog1999@163.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
网站建设中ing......