zoukankan      html  css  js  c++  java
  • 浮点运算

    计算机内无论整数还是浮点数都是以二进制存储的;浮点数由三部分组成:符号位s,阶码e,尾数m;

    一:预备:

      值                                    存储位                                      指数偏移量

    real*4                      1位符号位(s)\8位指数(e)               23位尾数(m,共32位)   127(7FH)

    real*8                      1位符号位(s)\11位指数(e)             52位尾数(m,共64位)      1023(3FFH)

    real*10                    1位符号位(s)\15位指数(e)             64位尾数(m,共80位)       16383(3FFFH)

    二:计算公式:

              V=(-1)^s*2^E*M

    当e(各位)为全'0'时,E=1-(2^(e(位数)-1)-1);M=m;

    如:real*4是8位,E=1-(2^(8-1)-1)=1-127=-126

    即:

    在real*4时:

    V=(-1)^s*2^(-126)*m

    在real*8时:

    V=(-1)^s*2^(-1022)*m

    当e(各位)不为全'0'且不为全'1'时,E=e(值)-(2^(e(位数)-1)-1);M=1+m

    即:

    在real*4时:
    V=(-1)^s*2^(e(值)-127)*(1+m)
    在real*8时:
    V=(-1)^s*2^(e(值)-1023)*(1+m)

    三:将浮点格式转换为十进制数

    [例3.1]:

    0x00280000(real*4)

    转换为二进制:

    0000 0000 0010 1000 0000 0000 0000 0000

    0         000 0000 0          010 1000 0000 0000 0000 0000

    一个符号位       8位指数位          23位尾数位

    E=-126       m=0. 010 1000 0000 0000 0000 0000=0.3125

    该浮点数的十进制数为:

    V=(-1)^s*2^(-126)*m

    V=(-1)^0*2^(-126)*0.3125=1*2^(-126)*0.3125=3.6734198463196484624023016788195e-39

    四:将十进制数转换成浮点格式(real*4)

    十进制数:26.0

    二进制数:11010.0

    规格化二进制数:

    11010.0/1.10100=10000=2^4,因此:

    1.10100*2^4

    计算指数:

    4+127=131

    符号位              指数位                           尾数部分

    0                 100 0001  1             101 0000 0000 0000 0000 0000

    为:0x41D0 0000

    0.75

    二进制为:

    0.11

    规格化二进制:

    1.1*2^-1

    计算指数:

    -1+127=126

    0 01111110 10000000000000000000000
    以单精度(real*4)浮点格式存储该数
    0011 1111 0100 0000 0000 0000 0000 0000
    0x3F40 0000

    2.5
    十进制-2.5转换成二进制
    -10.1
    规格化二进制数
    -1.01*2^1
    计算指数
    1+127=128
    符号位 指数部分 尾数部分
    1 10000000 01000000000000000000000
    以单精度(real*4)浮点格式存储该数
    1100 0000 0010 0000 0000 0000 0000 0000
    0xC020 0000

  • 相关阅读:
    HTML 特殊符号编码对照表
    C#删除字符串最后一个字符的几种方法
    c# 获取相对路径
    垂直滚动条代码
    Android微信分享功能实例+demo
    android之Itent.ACTION_PICK Intent.ACTION_GET_CONTENT妙用
    Android Camera 使用小结
    onSaveInstanceState和onRestoreInstanceState
    Android中的PopupWindow详解
    Unable to execute dex: java.nio.BufferOverflowException.解决办法
  • 原文地址:https://www.cnblogs.com/itxiaocaiyidie/p/2368114.html
Copyright © 2011-2022 走看看