• 【计算机组成原理】浮点数的运算


    浮点数的运算

    X = -5/256

    Y= +59/1024

    计算X-Y

    阶符2位,阶码3位,数符2位,尾数9位

    X = -5 x 1/256 = -5 x 2-8 = -101x 2-8 = -0.101 x 2-5 = -0.101 x 2-101

    Y = 59 x 1/1024 = 59 x 2-10 = 111011x 2-10 = 0.111011 x 2-4 = 0.101 x 2-100

    对阶

    小阶向大阶看齐

    1、求阶差

    求出两个数阶的差

    Ex:
    E1=-101 E2=-100 (二进制)
    相对应的补码(双符号)为11011, 11100
    第二个补码取反为00100
    得差为
    11011 + 00100 = 11111
    补码转为真值为11001,为-1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2、对阶

    根据求出的阶差,进行阶码和尾数的移位与变换。

    Ex:
    根据上面Ex得出第一个阶码比第二个阶码小1
    因此x=-0.101 x 2^-101^ = 11011;11.011000000 -> 11100;11.101100000
    
    
    • 1
    • 2
    • 3
    • 4

    尾数加减

    -Y = -59 x 1/1024 = -59 x 2-10 = -111011x 2-10 = -0.111011 x 2-4 = -0.111011 x 2-100

    =11100;11.000101

    X-Y = 11100;11.101100000 + 11100;11.000101 = 11100;10.110001000

    规格化

    看数符,是否要进行右规或相关操作

    Ex:
    这里进行右移,数符和尾数右移,阶码加一
    X-Y = 11100;10.110001000  -> 11101;11.011000100
                                          011000011
                                          100111100
    
    • 1
    • 2
    • 3
    • 4
    • 5

    舍入

    舍0进1法

    恒为1法

    判断溢出

    尾数溢出可以使用规格化和舍入

    阶码溢出就发生溢出了。

    Ex:
    最后为2^-3^x(-0.1001111)~2~
    
    • 1
    • 2

    强制类型转化

    类型16位机器32位机器64位机器
    char888
    short161616
    int163232
    long323264
    long long646464
    float163232
    double646464

    char->int->long->double

    float->double

    范围、精度从小到大,转换过程没有顺手

    32位

    int:表示整数,范围-231~231-1

    flaot:表示整数及小数,范围正负[2-126~2127x(2-2-23)],有效数字1+23=24

    (1.1111111 1111111 11111111 x 2127)

    int -> float 可能损失精度

    float->int 可能溢出或损失精度

  • 相关阅读:
    电机学 基础概念 野火电机第四章 电机分类
    常用的Java开发工具比较
    IM6ULL学习第18章Linux 系统对中断的处理
    在ts中val is Map是什么意思呢?
    Java虚拟机(JVM)的调优技巧和实战2
    并发调用deepseek API,构建多轮对话数据
    多态(个人学习笔记黑马学习)
    风控模型中特征重要度的两种筛选方法
    进程、线程、协程相关知识积累
    vue实现在线预览office文件
  • 原文地址:https://blog.csdn.net/weixin_45755831/article/details/127819169