计算机组成原理——数据表示(二)

ops/2025/1/23 8:28:57/

当生活的压力和困惑缠绕在身边,我们往往需要振奋精神,勇往直前。无论在何种困境中,我们都要保持积极的态度和坚定的信念。将悲观的情绪抛之脑后,展现出坚强的意志力和无尽的活力。振奋精神意味着我们要战胜自己内心的负面情绪,抛开烦恼,迎接挑战。无论面对多么艰难的境遇,我们都应该激发内心的力量,迎难而上。不论结果如何,勇敢的尝试本身就是一种胜利。振奋精神是一种积极的心态,它让我们变得更加勇敢、自信和坚定。只有拥有振奋精神,我们才能在困境中找到解决问题的办法,战胜自己的恐惧和犹豫。所以,无论前方有多么曲折和艰巨,让我们一起振奋精神,勇往直前吧!

计算机组成原理资源网

https://www.wenjingketang.com/这里面有ppt课后习题及答案,需要的可以自行下载

目录

2.2 定点数的表示

2.2.1 无符号数和有符号数的表示

2.2.2 机器数的定点表示

2.2.3 数的机器码表示

2.3 浮点数的表示

2.3.1 浮点数的表示格式

2.3.2 规格化浮点数

2.3.3 IEEE 754标准

2.4 常见问题和易混淆知识点

无符号数与有符号数的区别

定点数与浮点数的选择

规格化与非规格化的理解

IEEE 754标准的理解


2.2 定点数的表示

2.2.1 无符号数和有符号数的表示

无符号数(Unsigned Numbers):

  • 定义: 只能表示非负数,每一位都用于表示数值大小,没有专门的符号位。
  • 范围: 对于n位无符号整数,其取值范围是从0到2n−12n−1。例如,8位无符号整数的范围是0到255。
  • 例子: 一个8位无符号整数00001010表示十进制中的10。

有符号数(Signed Numbers):

  • 定义: 可以表示正数和负数,最高位通常作为符号位,0 表示正数,1 表示负数。
  • 原码(Sign-Magnitude Representation):
    • 定义: 符号位加上绝对值的二进制表示。例如,8位二进制中的+5为00000101,-5为10000101
    • 问题: 存在一个正零和一个负零(0000000010000000),这增加了复杂性。
  • 反码(One's Complement):
    • 定义: 正数的反码等于其原码;负数的反码是在原码基础上,除了符号位外,其余各位取反。
    • 问题: 同样存在两个零的问题,并且在进行算术运算时需要额外的步骤来处理符号位。
  • 补码(Two's Complement):
    • 定义: 是最常用的表示方式。正数的补码等于其原码;负数的补码是在其反码的基础上加1。补码的优点是可以简化加减法运算,因为在补码系统中,正数和负数的加减法可以统一为加法操作。
    • 优点: 解决了双零问题,并且使得加法器设计更为简单,能够正确处理带符号数的加减运算。
  • 例子:
    • +5 的补码表示为 00000101
    • -5 的补码表示为 11111011(先将5转换成二进制 00000101,然后取反得到 11111010,最后加1变为 11111011)。
2.2.2 机器数的定点表示

定点数(Fixed-point Number):

  • 定义: 定点数是指小数点位置固定不变的数字表示方法。根据小数点的位置不同,分为定点整数和定点小数两种类型。
  • 定点整数: 小数点位于最低有效位之后,所有位都用来表示整数部分。
  • 定点小数: 小数点位于最高有效位之前,所有位都用来表示小数部分。
  • 混合定点数: 一部分位表示整数部分,另一部分位表示小数部分。小数点的位置是预先约定好的。

特点:

  • 简单直观,硬件实现容易。
  • 适合用于对精度要求不高或已知数据范围的应用场景。
  • 在嵌入式系统和DSP(数字信号处理器)中广泛应用。
2.2.3 数的机器码表示

机器码(Machine Code):

  • 定义: 机器码是计算机内部用来表示数值的形式,采用二进制表示法。对于有符号数,通常使用补码形式。
  • 无符号数: 没有符号位,全部位用于表示数值。
  • 有符号数: 使用最高位作为符号位,其余位表示数值。

例子:

  • 对于8位二进制:
    • +5 的补码表示为 00000101
    • -5 的补码表示为 11111011


2.3 浮点数的表示

2.3.1 浮点数的表示格式

浮点数(Floating-point Number):

  • 定义: 浮点数是一种用来表示实数的数据类型,它允许小数点位置浮动,从而可以表示非常大或非常小的数值。
  • 组成: 浮点数由三部分组成:符号位(S)、指数位(E)和尾数位(M)。
    • 符号位(S): 1位,表示数值的正负,0为正,1为负。
    • 指数位(E): 表示数值的大小,通常是偏置表示法(Biased Notation),即实际指数加上一个偏移量。
    • 尾数位(M): 表示数值的有效数字部分,也称为分数部分。

例子:

  • IEEE 754单精度浮点数格式:
    • 符号位:1位
    • 指数位:8位
    • 尾数位:23位
2.3.2 规格化浮点数

规格化(Normalized Form):

  • 定义: 当浮点数被表示为规格化形式时,尾数的第一位总是隐含为1(但不在存储中显式出现),这样可以在不增加存储空间的情况下提高表示精度。
  • 特点:
    • 提高了表示精度,因为多了一位有效数字。
    • 保证了浮点数之间的比较更加直接和高效。

非规格化数(Denormalized or Subnormal Numbers):

  • 定义: 当指数全为0时,尾数不再隐含前导1,而是直接从第一位开始计算,这样的浮点数被称为非规格化数。
  • 作用: 主要是为了扩展可表示的最小正数和最大负数的范围,填补了规格化数与零之间的空隙。
2.3.3 IEEE 754标准

IEEE 754标准:

  • 概述: IEEE 754是一个广泛接受的标准,规定了浮点数的表示方法、舍入规则以及异常情况的处理等。
  • 版本: 目前有两个主要版本——1985年发布的原始版本和2008年更新的版本。
  • 格式:
    • 单精度(Single Precision): 32位,包括1位符号位、8位指数位和23位尾数位。
    • 双精度(Double Precision): 64位,包括1位符号位、11位指数位和52位尾数位。
    • 四精度(Quadruple Precision): 128位,适用于更高精度需求的场合。

特殊值:

  • 零(Zero): 所有位均为0表示正零;符号位为1,其他位为0表示负零。
  • 无穷大(Infinity): 指数全为1,尾数全为0表示正无穷或负无穷。
  • NaN(Not a Number): 指数全为1,尾数至少有一位为1表示不是一个合法的数值。


2.4 常见问题和易混淆知识点

无符号数与有符号数的区别
  • 区别: 无符号数只能表示非负数,而有符号数既能表示正数也能表示负数。它们的最大区别在于最高位是否作为符号位使用。
  • 影响: 如果不小心将有符号数当作无符号数处理,可能会导致严重的逻辑错误。例如,在C语言中,如果一个变量被声明为unsigned int,那么即使它的值超过了int类型的上限,也不会触发溢出错误,而是继续循环回0。
定点数与浮点数的选择
  • 选择依据:
    • 定点数: 适合精度要求不高或已知数据范围的应用场景,如嵌入式系统、DSP等。由于其简单性和效率,常用于实时控制系统。
    • 浮点数: 更适合需要高精度和大动态范围的应用,如科学计算、图形渲染等领域。然而,浮点运算相对复杂,消耗更多资源。
规格化与非规格化的理解
  • 规格化: 提高了表示精度,但在某些情况下可能导致下溢(Underflow),即接近零的小数无法准确表示。
  • 非规格化: 允许表示更小的数,但代价是降低了精度。它们主要用于避免完全丢失信息的情况,比如当数值非常接近零时。
IEEE 754标准的理解
  • 重要性: IEEE 754确保了不同平台之间浮点数表示的一致性,减少了跨平台开发时可能出现的兼容性问题。
  • 细节: 包括但不限于浮点数的表示格式、舍入模式、异常处理机制等。熟悉这些细节有助于编写更可靠和高效的程序。

http://www.ppmy.cn/ops/152420.html

相关文章

开源模型应用落地-工具使用篇-Spring AI-Function Call(八)

一、前言 通过“开源模型应用落地-工具使用篇-Spring AI(七)-CSDN博客”文章的学习,已经掌握了如何通过Spring AI集成OpenAI和Ollama系列的模型,现在将通过进一步的学习,让Spring AI集成大语言模型更高阶的用法&#…

高效建站指南:通过Portainer快速搭建自己的在线网站

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…

RabbitMQ-消息可靠性以及延迟消息

目录 消息丢失 一、发送者的可靠性 1.1 生产者重试机制 1.2 生产者确认机制 1.3 实现生产者确认 (1)开启生产者确认 (2)定义ReturnCallback (3)定义ConfirmCallback 二、MQ的持久化 2.1 数据持久…

【算法】集合List和队列

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 零:集合,队列的用法 一:字母异位词分组 二:二叉树的锯…

鸿蒙Flutter实战:17-无痛上架审核指南

在上期文章中,我们体验了无痛使用 Flutter 快速启动开发的过程,本期重点聚焦上架审核流程。 无痛打包 提前准备好生产证书。 具体步骤见“鸿蒙Flutter实战:13-鸿蒙应用打包上架流程”,在AGC平台证书栏,“新增证书”成…

Python 模拟真人鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

自动扣webpack框架演示 | 某书 x-xray-traceid 签名算法分析记录

【作者主页】:小鱼神1024 【擅长领域】:JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码&#…

暑期实习准备:C语言

1.局部变量和全局变量 局部变量的作用域是在变量所在的局部范围,全局变量的作用域是整个工程;局部变量的生命周期是作用域内,全局变量的生命周期是整个程序的生命周期,当两者命名冲突时,优先使用的是局部变量。 2.C语言…