定点数和浮点数的运算

article/2025/9/9 14:59:41

文章目录

    • 1、补码加减法
    • 2、算法流程
    • 3、逻辑实现
    • 4、溢出判断
    • 5、移位操作
    • 6、舍入方法
    • 7、定点乘法运算
    • 8、定点除法运算
    • 9、浮点数相关计算

1、补码加减法

原码、反码、补码的转换:
1、先把数值转换成对应的二进制数;(进制转换);
2、再将数值转换成对应的补码形式存储;
①如果数值是正数,原码、反码、补码相同;
②如果是负数,先将其转换为反码(符号位(即最高位)不变,其他位取反的结果),最后转为补码(反码后边+1);

比如:(拿八位表示的)

7的原码 ===> 0000 0111 反码、补码 ===> 0000 0111
-7的原码 ===> 1000 0111 反码 ===> 1111 1000 补码 ===> 1111 1001

运算的基本关系式

  • (X+Y)补 = X补+Y补;操作码为’+’,两数直接相加;
  • (X-Y)补 = X补+(-Y)补;操作码为’-’,变为x+(-y)运算即可;

下面是拿5位表示计算的几个例子:

两数相加:

1>  x = 3,x补 = 0 0011                  2>  x = -3,x补 = 1 1101                            y = 2,y补 = 0 0010 +                    y = -2,y补 = 1 1110 +-----------------------                  -----------------------0 0101(+5的补码)                        1 1101(-5的补码)3>  x = 3, x补 = 0 0011                 4>  x = -3,x补 = 1 1101                            y = -2,y补 = 1 1110 +                    y = 2,y补 = 0 0010 +-----------------------                  -----------------------0 0001(+1的补码)                        1 1111(-1的补码)      

两数相减:

1>  x = 4,x补 = 0 0100                 2>  x = -4,x补 = 1 1100                       y = -5,                                y = 5,-y = 5 y补 = 0 0101 +                  -y = -5, y补 = 1 1011-----------------------                  -----------------------0 1001(+9的补码)                        1 0111(-9的补码)

2、算法流程

在这里插入图片描述

3、逻辑实现

⒈控制信号

  • 加法器输入端:
 +A :打开控制门,将A送入∑;+B :打开控制门,将B送入∑;—               —+B :打开控制门,将B送入∑;+1:控制末位+1

加法输出端:

∑→A:打开控制门,将结果送A输入端;
CPA:将结果打入A;

⒉逻辑图
**加粗样式**

4、溢出判断

还是5位表示数字,以下是几个例子:

1>  x = 10,x补 = 0 1010                  2>  x = -10,x补 = 1 0110                            y = 7, y补 = 0 0111 +                    y = -7, y补 = 1 1001 +-----------------------                  -----------------------1 0001(正溢出)                            0 1111(负溢出)
  • 正溢出:正数相加而发生了溢出,结果超出了尾数部分最大能表示的范围;
  • 负溢出:负数相加而发生了溢出,结果超出了尾数部分最大能表示的范围;

5、移位操作

  1. 逻辑移位:数码位置变化,数值不变;
  2. 算术移位:数码位置变化,数值改变,符号位不变;;

正数补码移位规则:

1> 单符号位                             2> 双符号位 0 0111                                 00 0111
←     0 1110                              ←  00 1110
→     0 0111                              ←  01 1100
→     0 0011                          

符号位不变,(单符号位:符号位不变;双符号位:第一符号位不变,第二符号位可以暂存进位,但是结果符号位只能是00或11),空位补0;

负数补码移位规则:

1> 单符号位                             2> 双符号位 1 1011                                 11 0110
←     1 0110                              ←  10 1100
→     1 1011                              →  11 0110
→     1 1101                              →  11 1011

符号位不变,(单符号位:符号位不变;双符号位:第一符号位不变,第二符号位可以暂存进位,但是结果符号位只能是00或11),左移空位补0,右移空位补1;

6、舍入方法

  • 0舍1入法
  • 末位置1法;

例子:

保留4位位数:

0舍1入法:
0 00100  → 0 0010
1 00101  → 1 0011
1 11011  → 1 1110末位置1法:
0 00100  → 0 0011
1 00101  → 1 0011
1 11011  → 1 1101

7、定点乘法运算

8、定点除法运算

参考:链接

9、浮点数相关计算

浮点数,就是小数点位置不确定的数,为何不确定呢,那看你的读法了,比如3.9×10²你也可以看做是0.39×10³,浮点数的相关表示表示和计算直接看题吧:

先要了解这个:
在754标准中,一个规格化的32位浮点数x的真值表示为:

x = (-1)s×(1.M)×2(E-127); e = E-127

一个规格化的64位浮点数x的真值为:

x = (-1)s×(1.M)×2(E-1023); e = E-1023

s就看当前数字是正还是负了,正的话s = 0,负的话s = 1;

一、将下列十进制数表示成IEEE754标准的32位浮点规格化数
(1) 27/64
解:27/64=0.421875
(0.421875)10=(0.011011)2
E=-2+127=125=01111101
S=0
M=1011 0000 0000 0000 0000 000
有:0 01111101 10110000000000000000000
当然,你还有这么算:
27的二进制数是:11011
1/64就是:2-6
于是:27/64 ===> 11011×2-6 ====> 0.011011
后面都一样了;

(2) -27/64
解:27/64=0.421875
(0.421875)10=(0.011011)2
E=-2+127=125=01111101
S=1
M=1011 0000 0000 0000 0000 000
有:1 01111101 10110000000000000000000

二、已知X和Y, 用变形补码计算X+Y, 同时指出运算结果是否溢出。

(1)X=11011   Y=00011
解:[X]补=0011011 [Y]补=0000011[X]补 0011011
+   [Y]补 0000011
------------------[Y+X]补 0011110没有溢出(2)X= 11011  Y= -10101
解:[X]补=0011011[Y]补=1101011[x]补 0011011
+  [Y]补 1101011
--------------------------
[Y+X]补  0000110
没有溢出(3)X=-10110  Y=-00001
解:[X]补=1101010 [Y]补=1111111[X]补=1101010
+   [Y]补=1111111
----------------------------
[Y+X]补   1101001
没有溢出

三、设阶码为3位, 尾数为6位。按浮点运算方法, 完成下列取值的[X+Y],[X-Y]运算:

(1)X= 2-011×0.100101 ,Y= 2-010×(-0.011110)解: [x]浮 = 11101,0.100101         [y]浮 = 11110,-0.011110        Ex-Ey = 11101+00010=11111 [x]浮 = 11110,0.010010(1) 
X+Y:0 0. 0 1 0 0 1 0 (1)        
+   1 1. 1 0 0 0 1 0 
-------------------------------
1 1. 1 1 0 1 0 0 (1)            规格化处理:   1.010010    阶码:   11100                   x+y= 1.010010*2∧-4 = 2∧-4*-0.101110  
X-Y:0 0. 0 1 0 0 1 0 (1) 
+   0 0. 0 1 1 1 1 0 
-------------------------------- 
0 0 1 1 0 0 0 0 (1)         
规格化处理:   0.110000    
阶码 :   11110  
x-y=2∧-2*0.110001 

http://chatgpt.dhexx.cn/article/UZ49df6S.shtml

相关文章

关于浮点运算和定点运算

什么是定点数? https://baike.baidu.com/item/%E5%AE%9A%E7%82%B9%E6%95%B0/11030127什么是定点运算? https://baike.baidu.com/item/%E5%AE%9A%E7%82%B9%E8%BF%90%E7%AE%97/1861887?fraladdin什么是浮点数? https://baike.baidu.com/item/%…

浮点数运算和溢出

何为浮点数 在大部分实现中,浮点数通常是基于IEEE浮点标准用V(-1)的形式来表示一个数 s是符号位,决定这个数是正数还是负数.significand M是一个二进制小数,范围在[1~ 2 - ]或者[0-] 中文称为尾数.exponent E是对浮点数加权,权重…

浮点数的运算

浮点数的加减运算 从十进制科学计数法理解浮点数的加减运算: 对阶的原则是小阶对大阶(算术右移),之所以这样做是因为若大阶对小阶(算数左移),则尾数的数值部分的高位需移出,而小阶对…

浮点数的加法运算

浮点数的加法运算分以下五个步骤: 1、对阶: 这一点和十进制中计算指数一样,首先应该使指数化为相同的指数幂,例如: x3*10^4,y4*10^3,则,xy3*10^40.4*10^4(30.4)*10^4 二进制中也是如此: x.…

2.6 浮点运算方法和浮点运算器

学习目标: 以下是一些具体的学习目标: 理解浮点数的基本概念和表示方法,包括符号位、指数和尾数。学习浮点数的运算规则和舍入规则,包括加、减、乘、除、开方等。了解浮点数的常见问题和误差,例如舍入误差、溢出、下…

什么是浮点数?

微信搜索关注「水滴与银弹」公众号,第一时间获取优质技术干货。7年资深后端研发,用简单的方式把技术讲清楚。 在上一篇文章中,我们主要介绍了在计算机中使用定点数表示数字的方式。 简单回顾一下,简单来说,用定点数表…

浮点数加减运算

浮点运算要把阶码和尾数分别处理。 阶码的运算是定点整数运算,对阶码的运算四种:阶码加1,阶码减1,两阶码求和,两阶码求差。 尾数的运算是定点小数运算,运算过程中一般取双符号位 浮点运算器总是由处理阶…

浮点数运算原理详解

导读:浮点数运算是一个非常有技术含量的话题,不太容易掌握。许多程序员都不清楚使用操作符比较float/double类型的话到底出现什么问题。 许多人使用float/double进行货币计算时经常会犯错。这篇文章是这一系列中的精华,所有的软件开发人员都应…

浮点数运算——加减乘除都有哈

什么是浮点数 浮点数运算异常 IEEE 754 标准规定的五种异常情况 浮点数除0的问题 浮点数加减运算 浮点数乘除运算 导读:浮点数运算是一个非常有技术含量的话题,不太容易掌握。许多程序员都不清楚使用操作符比较float/double类型的话到底出现什么问题…

浮点数的运算步骤

浮点数的运算步骤 浮点数的加减运算一般由以下五个步骤完成:对阶、尾数运算、规格化、舍入处理、溢出判断 一、对阶 所谓对阶是指将两个进行运算的浮点数的阶码对齐的操作。对阶的目的是为使两个浮点数的尾数能够进行加减运算。因为,当进行M x2Ex与M …

浮点数运算

今天学习了浮点数运算(加减乘除)。浮点数运算主要包括两部分:指数运算和尾数运算。在IEEE754标准下,指数运算就是阶码的运算,类似于无符号数运算。尾数运算是原码运算。之前一直很疑惑为什么前面的教材在介绍原码运算&…

计算机组成原理:浮点数的加、减、乘、除运算(含实例完整运算)

目录 浮点数的加减运算 零操作数的判断 对阶操作 尾数的加减操作 尾数的规格化 结果的舍入处理 结果的溢出判断 加减实例运算过程 浮点数的乘除法 零操作数的检查 阶码的加减操作 尾数的乘除操作 结果的规格化、舍入处理及溢出的判断 具体的操作如下图 乘除实例运算…

浮点数的运算方法

浮点数的运算方法 一、浮点数的表示1.浮点数的表示2.IEEE 754标准3.浮点数类型 二、浮点数的加减法1.定义2.运算步骤 三、运算部件四、强化练习 一、浮点数的表示 1.浮点数的表示 Ms表示尾数的符号位,E中1bit保存阶码的符号位其余空间存放阶码值,M中存放…

typeScript 接口(interface)及其与类型别名(type)的区别

背景 最近自己在学习一些视频剪辑相关的工具,像爱剪辑,剪映这些软件。然后就想自己是不是也可以实现一个类似的,轻量级的在线剪辑工具。最后发现这个款node端的工具库FFCreator,接下来简单介绍一下如何来搭建开发环境&#xff0c…

Type Description : This type is a general type that can be used to declare

错误描述: Complex type: param-valueType Description : This type is a general type that can be used to declare parameter/value lists. 解决方法: 把0移到init-param下面

Type and Value

Type and Value 前言一、reflect.Type1.1 数据结构1.2 方法1.2.1 所有类型通用方法1.2.2 不同基础类型的专有方法 二、reflect.Value总结参考资料 前言 reflect.Type和reflect.Value是go 反射的两大基本类型,一个管变量的类型方面,一个管变量的值方面。…

typescript interface 与 type 声明类型的区别

在 typescript 中, 我们定义类型有两种方式: 接口(interface) 和类型别名(type alias) 在官方文档中我们可以看到: Unlike an interface declaration, which always introduces a named object type, a type alias declaration can introduce a name for any kind…

type是什么

作者:newis 链接:https://www.zhihu.com/question/376890141/answer/1302417252 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 程语言的Type的话,有在不同的场景下有不同的意义…

Type-C

一、Type-C 从USB TYPE-C 的Spec上截一个USB TYPE-C母座的pin脚图: 可以看出,母座上有24根信号, 其中电源和地占据了8根,用于提升电流传输能力,剩下16个: (1)传输USB3数据的RXx和…

Java Type

Type 是Java 编程语言中所有类型的公共高级接口(官方解释),也就是Java 中所有类型的”爹“。其中”所有类型“的描述尤为指的关注。它并不是我们平常工作中经常使用的int、String、List、Map等数据类型,而是从Java语言角度磊说&am…