首页 > 其他分享 >计组--信息编码和数据表示and运算方法运算器(复习专用)

计组--信息编码和数据表示and运算方法运算器(复习专用)

时间:2024-06-23 20:28:17浏览次数:27  
标签:运算 符号 -- 浮点数 规格化 数据表示 溢出 原码 计组

文章目录


前言

学无止境,笔勤不辍。真正开始复习计组,就会发现 它 真的难…笔者这次整理了有关补码、移码、原码、反码表示的方法、浮点数的表示 and与它们相关的计算,和硬件实现结构和操作的知识点,希望能給大家一些帮助,同时也希望大家多多分享易错点…


一、数值的格式

一般参与计算机运算的数值数据有两种:
1.无符号数:所有的二进制数据位都用来表示数值本身,无正负
2.有符号数:一般最高位是符号位,代表正负,不代表本身数值大小
当有符号数和无符号数位数相等时,表示的范围是不同的
本身计算机硬件无需区分有符号数或是无符号数,通过程序不同指令来区分即可

定点表示法:约定机器数的小数点位置是固定不变的
浮点表示法:浮点数N由三部分组成,阶码E(定点整数表示) M尾数(定点小数表示) R阶码的底(一般默认为2、8、16)
浮点数的小数点位置由阶码决定,随阶码大小变化而变化其实总的来说,精度由尾数决定,大小由阶码决定。
计算机的精度:1.计算机能表示的最大负数–副精度 2.计算机能表示的最小正数–正精度
精度由机器数的编码形式、位数、格式决定
当然,由于精度问题,会出现不同种类溢出问题,

1.位于最大负数和最小正数之间,计算机直接将其视为0处理,称为下溢
2.当机器数大于最大正数,称为正溢出
3.当机器数小于最小负数,称为负溢出

定点数and浮点数的异同点:
1.计算机所能代表的都是一系列的离散的点,并且采用近似的操作
2.硬件字长有限,无论定点数还是浮点数,都会溢出
3.定点数是均匀分布的,浮点数分布是离0点近密远疏的

二、定点机器数的表示方式

1.原码表示法:

1.形式:将真值中的正号用"0"表示,负号用"1"表示,放置在最高位,数值部分不变
2.特点:
1.0既可用正数原码表示,也可以用负数原码表示即 0的原码不唯一,占用了两个编码。
3.范围:
n+1位机器数条件下:
定点整数:(-(2n-1),(2n-1)) 定点小数(-(1-2-n),(1-2-n))
4.运算:
运算时,符号位单独处理,将真值的绝对值进行相加减,在判断符号位正负。
5.用途:
主要用于浮点数尾数的运算。

2.补码表示法:

1.形式:正数,符号位是"0",数值位是真值绝对值;负数,符号位是“1”,数值位是按位取反后末位+1
2.特点:
真值0唯一
3.范围:
n+1位机器数条件下:
定点整数:(-2n,2n-1) 定点小数:(-1,(1-2-n))
4.运算:
基本上加减运算都用补码
5.用途:
用补码表示有符号整数

3.反码表示法:

1.形式:正数,符号位是"0",数值为是真值绝对值;负数,符号位是"1",数值位将真值绝对值按位取反
2.特点:
真值"0"的表示不唯一,占用了全"0"编码和全"1"编码
3.范围:
n+1位机器数条件下:
与原码相同
4.运算:
基本不用
5.用途:

4.移码表示法:

只用来表示定点整数ps.笔者也不是特别理解
1.形式:正数,符号位是"1",数值位是真值绝对值;负数,符号位是"0",数值位按位取反后+1
2.特点:
真值"0"的表示唯一
3.范围:
定点整数:(-2n,2n-1),-2n编码全0
4.运算:
适用于比较运算,无论正负,均从符号位开始,逐位比较大小即可
5.用途:
暂不作总结…

三、浮点机器数的表示方式(规格化)

1.规格化的阶码的底R为2的尾数M应该满足的条件为:2-1<=|M|<=1,无前导零
判断:若M是原码表示,则最高有效位为1即可,形式如x.1xxxx…
若M是补码表示,则最高有效位和符号位要相异,形式如0.1xxxxx…或1.0xxxxxx…
2.对于非规格化的尾数,要对其进行规格化操作:对于原码,若符号位是0,必须左移,操作为(尾数M每左移一位,阶码减一),直到形式为x.1xxxx…;对于补码形式,当符号位和最高位相同时也必须左规,直到符号位和最高位相异…
注意,格式化的浮点机器数表示范围和非规格化的浮点数机器数表示范围不一定相等
大数和小数相加减的时候,可能会出现大数吃小数的现象,就是因为浮点数疏密不均,导致小数直接被大数吸收
3.IEEE754浮点数格式
1.单精度:总位数32位,格式MsEM,数符位+阶码+数值位,规格化真值计算:(-1)Ms *(1.M)*2E-127 非规格化真值计算:(-1)Ms *(0.M)*2-126
2.双精度:将其中的127改成1023 126改为-1022即可
规格化IEEE754浮点数的阶码不全是1也不全是0
规格化时,尾数采用隐藏位,即原码表示的规格化尾数的数值最高位的1省略,可多出一位有效位

四、定点数的加减乘除运算

1.移位运算:1.补码算术左移,最高位移出,低位补"0",补码算术右移,低位移出,高位补符号位,即若为负数补"1",正数补"0";原码(andIEEE754浮点数的尾数)算数左移,符号位不变,数值最高位移出,低位补"0",算术右移,符号位不变,低位移出,高位补"0"
注意可能会有溢出
实现:可用属于组合逻辑电路的桶形移位器…
2.加减运算:
基本都采用补码形式,涉及了各类形式码和补码之间的转化
溢出:1.正溢出,正确结果是正数,结果算出是负数 2.负溢出,正确结果是负数,结果算出是正数。
异号两数相加,同号两数相减,绝对不会发生溢出
溢出的判断:

1.进位位判溢法:数值最高有效位和符号位的进位相同时,不溢出,否则溢出
2.双符号位判溢法:重复一位符号位参与计算,观察两个符号位加减之后是否相同,不相同则溢出 
3.单符号位判溢法:靠人工...

移码相加减:最好将另一计算数转为补码,进行相加减…
判溢时,若使用双符号判溢法,则移码表示的那个计算数复写符号位时恒为0,当最高符号位为1时溢出…
由于笔者期末考不涉及乘法和除法运算..因此就简单介绍一下原码形式的串行乘法和除法...
3.乘法运算(X*Y)

ps,部分积和乘数|Y|写在同一行
1.初始化部分积为0,乘数为|Y|
2.若|Y|最右边数位1,则部分积+|X|;若为0,则部分积+0
3.整体右移一位
 4.最终得到答案

4.乘法运算(X/Y)

ps,商和被除数|X|写在同一行
1.商初始化为0,被除数为|X|
2.第一次被除数-|Y|若符号位位0,商上1,左移一位再减去|Y|求下次的部分余数;若符号位是1,商上0,左移一位再加上|Y|求下次的部分余数
3.整体右移一位
4.循环操作,最后一次若商上0,要加上|Y|恢复余数

五、定点运算器的组成与结构

1.运算器是在控制器的控制下,完成数据的算术逻辑运算,组成部件一般为算法逻辑部件(ALU,核心部件)、暂存器(存放运算数据和结果)、通用寄存器堆(访问使用到的数据)、标志寄存器(记录运算器上次的结果状态)、内部总线(信息通道)、可选电路(包括数据选择器、移位器、三态缓冲器)等构成
有单总线、双总线两种结构
数据通路:源部件将数据送入总线,目的部件从总线接受数据,这个过程需要一个CPU周期,各个总线源部件的数据输出使能信号不能同时有效,即无论何时,只允许一个部件将数据送入总线,分时享用总线
一个CPU周期内,某条总线上的数据必须是唯一,且不能保留到下一CPU周期
多端口寄存器堆:能够同时对一组寄存器进行读出或者写入多个数据
标志寄存器:

1.ZF(标志为0寄存器):运算结果全为0,置1;不全为0,置0
2.CF(进位/借位寄存器):CF=1,发生进位/借位,否则置0。只对无符号数运算有意义
3.OF(溢出标志):OF=1,溢出;OF=0,无溢出,对有符号数运算有意义
4.SF(符号标志):与运算结果的符号位相同,对有符号数有用
5.PF(奇偶标志):结果中1的个数为偶数,置1,否则置0

六、浮点运算

1.浮点数运算时,一般参与运算的机器数时规格化的,计算结果也要时规格化的
2.浮点数加减运算:

规则:1.指数(E)相同,需要对阶,且小对大,最终以大的为基准 2.尾数进行相加减 3.结果规格化,左规或右规 4.舍入处理
舍入处理的方法:
1.截断法:将多余尾数直接去除
2.末位恒置1法:无论多余尾数如何,在舍入结果的最末位置置1
3.0舍1入法:多余位最高位为1,进1;否则舍去
IEEE754浮点数舍入方法:
1.向上舍入,靠近+∞:若为正数,只要多余位数不全为0,则进1;若为负数,则直接截断法
2.向下舍入,靠近-∞:若为负数,只要多余位数不全为0,则进1;若为正数,则直接截断法
3.向0舍入:无论正负,均使用截断法,不过会累积误差
4.就近舍入:即类似于四舍五入

乘除运算不涉及...


总结

以上就是今天要讲的内容,本文跨时长极大,主要是完成各种期末大作业…笔者也正式进入了期末周,将持续对计组和数据库的知识点、章节进行持续更新…希望大家多多关注…

标签:运算,符号,--,浮点数,规格化,数据表示,溢出,原码,计组
From: https://blog.csdn.net/Super_Ye6/article/details/139689784

相关文章

  • python连接mysql、sqlserver、oracle、postgresql数据库进行封装
    python连接mysql、sqlserver、oracle、postgresql数据库进行封装python连接mysql、sqlserver、oracle、postgresql数据库进行封装详解一、引言二、python连接MySQL数据库进行封装三、python连接SQLServer数据库进行封装四、Python连接Oracle数据库进行封装五、Python连......
  • 【Linux详解】冯诺依曼架构 | 操作系统设计 | 斯坦福经典项目Pintos
    目录一.冯诺依曼体系结构(VonNeumannArchitecture)注意事项存储器的意义:缓冲数据流动示例二.操作系统(OperatingSystem)操作系统的概念操作系统的定位与目的操作系统的管理系统调用和库函数操作系统的管理:sum三.系统调用实现示例:Pintos项目Step1:进入ex......
  • IA的统计学基础:深入解析与实践应用
    IA的统计学基础:深入解析与实践应用在数据泛滥的信息化时代,统计学作为解读数据语言的关键工具,对于任何希望从数据中提取价值的专业人士来说都是必修课。本文将从统计学的基本概念入手,深入探讨其技术细节,并展示如何将这些技术应用于实际问题解决中。统计学的定义与重要性统......
  • 创新实现(九)——博客处理
    博客部分当用户需要针对OJ上的比赛以及题目进行相关讨论的时候,OJ平台给大家一个博客平台供大家交流讨论。博客部分中利用blogs.php文件进行最近前10个博客的显示,用户可以利用右上角的按钮查看自己的博客情况以及自己写一个博客。博客总览blogs.php文件用于生成一个博客总览页......
  • php如何实现amr转成mp3
    php实现amr转成mp3的方法:1、在服务器安装ffmpeg;2、使用“ffmpeg-i”指令来转换amr为mp3格式;3、在网页端使用html5的audio标签来播放mp3文件即可。思路服务器安装ffmpeg使用ffmpeg-i指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数执行即可)一、服务器安装ffmp......
  • AI 大模型企业应用实战(06)-初识LangChain
    LLM大模型与AI应用的粘合剂。1langchain是什么以及发展过程LangChain是一个开源框架,旨在简化使用大型语言模型构建端到端应用程序的过程,也是ReAct(reason+act)论文的落地实现。2022年10月25日开源54K+star种子轮一周1000万美金,A轮2500万美金11个月里累计发布200多次,提交4......
  • goto语句
    C语言中提供了可以随意滥用的goto语句和标记跳转的符号从理论上goto语句是没有必要的,实践中没有goto语句很容易写出代码。但是某些场合下goto语句还是用的着的,最常见的用法是终止程序在某些深度嵌套的结构的处理过程。例如,一次跳出两层或多层循环。多层循环这种情况用break是......
  • C#知识点2
    C#基础知识2C#中的通用类型系统和类型断定1.理解通用类型系统(CTS)及公共语言规范(CLS)通用类型系统(CTS)通用类型系统(CTS)是Microsoft.NETFramework的核心组成部分,它定义了在.NETFramework中如何声明、使用和管理类型。CTS为所有.NET语言提供了统一的类型......
  • frp使用
    frp使用frp是一个专注内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中专暴露到公网。实验:配置frp,使得可以从外网访问内网远程桌面(3389)1.frps即frp的服务端,用于部署在公网的服务器上,与内网通信......
  • Eureka 服务注册与发现
    目录前言注册中心CAP理论常⻅的注册中心CAP理论对比Eureka搭建EurekaServer引⼊eureka-server依赖完善启动类编写配置⽂件启动服务服务注册引⼊eureka-client依赖完善配置⽂件启动服务服务发现引⼊依赖完善配置⽂件远程调⽤启动服务前言  ......