热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

定点数和浮点数的运算

文章目录1、补码加减法2、算法流程3、逻辑实现4、溢出判断5、移位操作6、舍入方法7、定点乘法运算8、定点除法运算9、浮点数相关计算1、补码加减法原码、反码、补码的转换ÿ


文章目录

    • 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

推荐阅读
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 在给定的数组中,除了一个数字外,其他所有数字都是相同的。任务是找到这个唯一的不同数字。例如,findUniq([1, 1, 1, 2, 1, 1]) 返回 2,findUniq([0, 0, 0.55, 0, 0]) 返回 0.55。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 深度学习理论解析与理解
    梯度方向指示函数值增加的方向,由各轴方向的偏导数综合而成,其模长表示函数值变化的速率。本文详细探讨了导数、偏导数、梯度等概念,并结合Softmax函数、卷积神经网络(CNN)中的卷积计算、权值共享及池化操作进行了深入分析。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 深入浅出:Google工程师的算法学习指南
    通过Google工程师的专业视角,带你系统掌握算法的核心概念与实践技巧。 ... [详细]
  • 本文深入探讨了 Python 列表切片的基本概念和实际应用,通过具体示例展示了不同切片方式的使用方法及其背后的逻辑。 ... [详细]
  • 本文详细介绍了K-Medoids聚类算法,这是一种基于划分的聚类方法,适用于处理大规模数据集。文章探讨了其优点、缺点以及具体实现步骤,并通过实例进行说明。 ... [详细]
  • 本文探讨如何利用人工智能算法自动区分网页是详情页还是列表页,介绍具体的实现思路和技术细节。 ... [详细]
author-avatar
djw
匠心独运
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有