【计算机组成原理】运算方法和运算器

数据与文字的表示方法

  • 1. 数据格式
    • 1.1 定点数表示方法
      • 1.1.1 定点小数
      • 1.1.2 定点整数
    • 1.2 浮点数表示方法
      • 1.2.1 浮点数表示
      • 1.2.2 浮点数的规格化
        • 1.2.2.1 尾数为原码表示的规格化
        • 1.2.2.2 尾数为补码表示的规格化
      • 1.2.3 IEEE754标准⭐
    • 1.3 十进制数串的表示方法
      • 1.3.1 字符串形式
      • 1.3.2 压缩的十进制数串形式
        • 用压缩的十进制数串表示一个数
  • 2. 数的机器码表示
    • 2.1 原码表示法
    • 2.2 反码表示法
    • 2.3 补码表示法
    • 2.4 移码表示法

1. 数据格式

在选择计算机的数的表示方式时,需要考虑以下几个因素:
①要表示的数的类型(小数、整数、实数和复数)
②可能的数值范围
③数值精确度
④数据存储和处理所需要的硬件代价

计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式

在现代计算机中,通常用补码整数表示整数,用原码小数表示浮点数的尾数部分,用移码表示浮点数的阶码部分

一般来说,
定点格式容许的数值范围有限,要求的处理硬件比较简单。
而浮点格式容许的数值范围很大,要求的处理硬件比较复杂。

1.1 定点数表示方法

定点格式:约定机器中所有数据的小数点位置是固定不变的。由于约定在固定的位置,小数点就不再使用记号“.”来表示。原理上讲,小数点位置固定在哪一位都可以,但是通常将数据表示成纯小数或纯整数

事实上,机器内部并没有小数点,只是人为的约定了小数点的位置。因此,定点数的编码和运算不需要考虑对应的定点数是小数还是整数,只需要关心它们的符号位和数值位即可

1.1.1 定点小数

定点小数是纯小数,约定小数点位置在符号位之后、有效数值部分最高位之前。

1.1.2 定点整数

定点整数是纯整数,约定小数点位置在有效数值部分最低位之后。


下面表示的是n+1位的定点数的表示形式请添加图片描述
❗注意|x|的取值范围:
如果 x 表示的是纯小数,那么小数点位于 xn 和 xn–1 之间。当 xnxn–1…x1x0 各位均为 0 时,x的绝对值最小,即 |x|min = 0 ;当各位均为1时,x的绝对值最大,即 |x|max = 2-1 + 2-2 +…+ 2-n = 1-2-n,因此表示范围为:0 ≤ |x| ≤ 1-2-n

如果 x 表示的是纯整数,那么小数点位于最低位 x0 的右边,此时 x 的表示范围为:0 ≤ |x| ≤ 2n - 1

定点数的运算简称为整数运算

1.2 浮点数表示方法

浮点数表示法是指以适当的形式将比例因子表示在数据中,让小数点的位置根据需要而浮动。这样在位数有限的情况下,既扩大了数的表示范围,又保持了数的精度。

任意一个十进制数 N 可以写成
N = 10E × M
同样,在计算机中一个任意二进制数 N 可以写成
N = 2e × M

1.2.1 浮点数表示

通常把浮点数表示为:
N = ( -1 )S × M × RE
式中,S取0或1,决定浮点数的符号;
M是一个二进制的定点小数,称为N的尾数,M决定数据的表示精度(因为尾数给出了有效数字的位数);
E是一个二进制定点整数,称为指数阶码是一个定点纯整数,决定数据的表示范围(因为阶码指明小数点的位置)。
R是基数,二进制浮点数R=2,十六进制浮点数R=16…

1.2.2 浮点数的规格化

为了让浮点数在运算过程中尽可能多的保留有效数字的位数,使有效数字尽量占满尾数数位,必须在运算过程中对浮点数进行规格化操作

规格化操作:
通过调整一个非规格化的浮点数的尾数和阶码大小,使非零浮点数在尾数的最高数位上保证是一个有效值。

1.2.2.1 尾数为原码表示的规格化

正数为 0.1xx…xx的形式,最大值表示为0.11…1;最小值表示为0.10…0
负数为 1.1xx…xx的形式,最大值表示为1.10…0;最小值表示为1.11…1

1.2.2.2 尾数为补码表示的规格化

符号位和最高数值位一定相反

正数为 0.1xx…xx的形式,最大值表示为0.11…1;最小值表示为0.10…0
负数为 1.0xx…xx的形式,最大值表示为1.01…1;最小值表示为1.00…0

例题1: 若某浮点数表示为 26 × 1.1110100 ,尾数使用补码表示,如何规格化?
补码算数左移,低位补0;补码算数右移,高位补1
规格化后:23 × 1.0100000

详细一点讲,尾数1.1110100 化成原码为:1.0001100,由于小数点左边的1表示符号而不是数值,因此小数点右边高位的3个0可以用阶码来表示。所以对于 1.1110100 ,直接左移三位,低位补0即可。

1.2.3 IEEE754标准⭐

早期的各种计算机系统的浮点数使用不同的机器码表示阶和尾数,给数据交换和比较带来很大的麻烦。→当前的计算机都采用统一的IEEE754标准中的格式来表示浮点数
在这里插入图片描述

IEEE754标准中,一个规格化的32位浮点数x的真值可表示为:

x = ( -1 )S × M × 2e

=( -1 )S × 1.M × 2E-127

可能你会问,
①为什么一个是M一个是1.M ?
→❗M位(23bit):是尾数,小数点在尾数域的最前面,为了尾数的表示精度提高一位,IEEE规格化浮点数规定小数点左边一位必须是1 ,即1.M (比如(1.75)10 = (1.11)B),这个“ 1 ”通常不予存储,所以M位存储的是有效数据的小数部分,因此尾数域M所表示的值应该是1.M

②为什么一个是e一个是E-127 ?

→❗E位(8bit):是阶码,IEEE754规定,这个阶码比实际数据中的指数真值多127。如果浮点数指数的真值是e,则阶码 E = e + 127
使用带偏移量的阶码(即后面要说的移码)好处是:将有符号数转化为了无符号数,所以:
· 阶码E不用考虑符号
· 便于两个阶码的比较
· 阶码域大者,指数真值也大

1.3 十进制数串的表示方法

一些计算机能直接处理十进制形式表示的数据,十进制数串在计算机内主要有两种表示形式:

1.3.1 字符串形式

1字节存放一个十进制的数位或符号位

主存中,这样一个十进制数占用连续多个字节,因此为了指明一个数,需要给出该数在主存的起始地址和串的长度(字节数、位数)。主要用在非数值计算的应用领域。

1.3.2 压缩的十进制数串形式

1字节存放2个十进制的数位

这种方法比上面那种节省存储空间,也便于直接完成十进制数的算术运算,这种方法采用的较为广泛。跟字符串形式类似,要指明一个数,需要给出该数在主存的起始地址和数字位个数(不含符号位),又称位长

十进制数串表示法的优点是位长可变

用压缩的十进制数串表示一个数

BCD码形式:一个字节放一个十进制的数位或符号位。
在这里插入图片描述

压缩BCD码形式:一个字节放两个十进制的数位。
在这里插入图片描述

符号位:放在最低数字位之后,占半字节
12(C)表示正号,13(D)表示负号。

规定数位+符号位 之和必须是偶数,当和不为偶数时,应在最高数字位前补一个0
在这里插入图片描述在这里插入图片描述

2. 数的机器码表示

前面介绍了数的小数点表示,下面还需要解决数的机器码表示问题。

在计算机中对数据进行运算操作时,符号位如何表示呢?是否也同数值位一道参加运算 操作呢?如参加,会给运算操作带来什么影响呢?

为了妥善地处理好这些问题,就产生了把 符号位和数值位一起编码来表示相应的数的各种表示方法,如原码、补码、反码、移码。 为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为真值,后者称为机器码(机器数)

对于同一个数根据需要,计算机可以使用不同的编码方式进行存储。
原码,反码,补码… 是机器存储一个具体数字的编码方式

机器中数据都是以补码形式出现

在这里插入图片描述

2.1 原码表示法

最高位(符号位)表示符号,其余位表示值。
符号位中0表示正数,1表示负数。
在这里插入图片描述

0有两种表示法:
[+0] = 0000 0000
[ -0] = 1000 0000

原码表示法简单易懂,但是运算复杂

2.2 反码表示法

正数的反码 = 原码
负数的反码:符号位不变,其余位取反。
在这里插入图片描述

2.3 补码表示法

正数的补码 = 原码
负数的补码:其反码+1

在这里插入图片描述
补码的特点:
· 补码的0值唯一
· 补码表示的负数范围可以到2n (原码反码只能到2n - 1)
· 补码表示的数据没有符号位(不过我们习惯上认为补码最高位是符号位)

2.4 移码表示法

移码通常用来表示浮点数的阶码,移码只能是整数

移码就是在真值x上加上一个常数(偏置值),这个常数通常取2n。相当于x在数轴上向正方向偏移了若干单位,这就是移码为什么叫移码。
[x] = 2n + x (-2n ≤ x ≤ 2n, 机器字长为n+1)

移码的特点:
· 移码的0值唯一
· 一个真值的移码和补码仅相差一个符号位,[x]的符号位取反就得到[x]
· 移码全0时,对应真值的最小值**-2n**;移码全1时,对应真值的最大值 2n - 1
· 移码保持了数据原有大小的顺序,移码大真值大,移码小真值小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tensorflow2.0笔记 - 使用卷积神经网络层做CIFA100数据集训练(类VGG13)

本笔记记录CNN做CIFAR100数据集的训练相关内容,代码中使用了类似VGG13的网络结构,做了两个Sequetial(CNN和全连接层),没有用Flatten层而是用reshape操作做CNN和全连接层的中转操作。由于网络层次较深,参数量…

centos搭建yum源

目录 1.createrepo简介 2.repo搭建思路 3.安装 4.使用 1.createrepo简介 createrepo 是一个用于创建 RPM 包的工具,它可以帮助你创建一个本地的 YUM 仓库。createrepo 并不是用于运行 YUM 仓库服务的软件,而是用来生成仓库的元数据,使得…

区分软件成熟度模型集成的五个等级

概念讲解 软件成熟度模型集成(CMMI,Capability Maturity Model Integration)是一种评估和改进软件开发过程的模型。CMMI的五个成熟度等级分别是: 初始级(Level 1 - Initial):在这个等级&#x…

【Taro3踩坑日记】找不到sass的类型定义文件

问题截图如下:找不到sass的类型定义文件 解决办法: 1、npm i types/sass1.43.1 2、然后配置 TypeScript 编译选项:确保 TypeScript 编译器能够识别 Sass 文件,并正确处理它们。

PyTorch的核心概念

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

AWS账号注册以及Claude 3 模型使用教程!

哈喽哈喽大家好呀,伙伴们!你听说了吗?最近AWS托管了大热模型:Claude 3 Opus!想要一探究竟吗?那就赶紧来注册AWS账号吧!别担心,现在注册还免费呢!而且在AWS上还有更多的大…

【Linux】认识文件(一):文件标识符

【Linux】认识文件(一):文件标识符 一.什么是文件?1.文件的本质2.文件的分类 二.访问文件操作1.C语言中的访问文件接口i.fopenii.fcloseiii.fwrite 2.系统访问文件接口i.openii.closeiii.write 三.文件管理1.对所有打开文件的管理…

FlinkCDC基础篇章2-数据源 SqlServerCDC写入到ES中

接着 上期FlinkCDC基础篇章1-安装使用 下载 Flink 和所需要的依赖包 # 下载 Flink 1.17.0 并将其解压至目录 flink-1.17.0 下载下面列出的依赖包,并将它们放到目录 flink-1.17.0/lib/ 下: 下载链接只对已发布的版本有效, SNAPSHOT 版本需要本地编译 …

【分治】Leetcode 数组中的第K个最大元素

题目讲解 数组中的第K个最大元素 算法讲解 堆排序:1. 寻找最后一个节点的父亲,依次向上遍历,完成小堆的建立;2. 从最后一个元素开始,和堆顶的数据做交换,此时最小的数据在对后面,然后对剩下的…

部署轻量级Gitea替代GitLab进行版本控制(一)

Gitea 是一款使用 Golang 编写的可自运营的代码管理工具。 Gitea Official Website gitea: Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言,这使我们只要生成一个可执行程序即…

【React】Sigma.js框架网络图-入门篇

一、介绍 Sigma.js是一个专门用于图形绘制的JavaScript库。 它使在Web页面上发布网络变得容易,并允许开发人员将网络探索集成到丰富的Web应用程序中。 Sigma.js提供了许多内置功能,例如Canvas和WebGL渲染器或鼠标和触摸支持,以使用户在网页上…

Echarts-丝带图

Echarts-丝带图 demo地址 打开CodePen 什么是丝带图? 丝带图是Power BI中独有额可视化视觉对象,它的工具提示能展示指标当期与下期的数据以及排名。需求:使用丝带图展示"2022年点播订单表"不同月份不同点播套餐对应订单数据。 …

搭建HBase2.x完全分布式集群(CentOS 9 + Hadoop3.x)

Apache HBase™是一个分布式、可扩展、大数据存储的Hadoop数据库。 当我们需要对大数据进行随机、实时的读/写访问时,可以使用HBase。这个项目的目标是在通用硬件集群上托管非常大的表——数十亿行X数百万列。Apache HBase是一个开源、分布式、版本化的非关系数据库…

Ceph学习 -11.块存储RBD接口

文章目录 RBD接口1.基础知识1.1 基础知识1.2 简单实践1.3 小结 2.镜像管理2.1 基础知识2.2 简单实践2.3 小结 3.镜像实践3.1 基础知识3.2 简单实践3.3 小结 4.容量管理4.1 基础知识4.2 简单实践4.3 小结 5.快照管理5.1 基础知识5.2 简单实践5.3 小结 6.快照分层6.1 基础知识6.2…

微信小程序使用 Vant Weapp 中 Collapse 折叠面板 的问题!

需求:结合Tab 标签页 和 Collapse 折叠面板 组合成显示课本和章节内容,并且用户体验要好点! 如下图展示: 问题:如何使用Collapse 折叠面板 将内容循环展示出来? js中的数据是这样的 代码实现&#xff1…

Python | Leetcode Python题解之第39题组合总和

题目&#xff1a; 题解&#xff1a; from typing import Listclass Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:def dfs(candidates, begin, size, path, res, target):if target < 0:returnif target 0:res.append(p…

Stability AI 发布 SD3 API:开启人工智能新篇章

文章目录 1.Stable Diffusion 3 API开放了! 2.Stability AI Document地址3.获取API Key4.API方式调用SD3出图接口地址接口请求规范接口请求响应结果 5.Stable Diffusion 3.0、Stable Image Core、Fooocus 2.3.1、MidJounery效果查看 1.Stable Diffusion 3 API开放了! Stabilit…

react 响应式栅格布局

遇到一个小问题 , 有很多的下拉框放在了一行的盒子里 用到了栅格思路 , 但响应式处理屏幕时候右侧的按钮会覆盖掉样式 之前我的思路是子绝父相 , 将按钮定在最右侧 , 按钮和下拉框都在同一盒子中 , 且做了栅格处理没想到还是会覆盖解决 : 后来我用到了 margin-left: auto 来让…

蓝桥杯2024年第十五届省赛真题-宝石组合

思路&#xff1a;参考博客&#xff0c;对Ha,Hb,Hc分别进行质因数分解会发现&#xff0c;S其实就等于Ha&#xff0c;Hb&#xff0c;Hc的最大公约数&#xff0c;不严谨推导过程如下&#xff08;字丑勿喷&#xff09;&#xff1a; 找到此规律后&#xff0c;也不能枚举Ha&#xff…

OpenCV——Niblack局部阈值二值化方法

目录 一、Niblack算法1、算法概述2、参考文献二、代码实现三、结果展示OpenCV——Niblack局部阈值二值化方法由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、Niblack算法 1、算法概述 Niblack 算法是一种典型的局部阈值…