热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

[note]浮点数二进制科学计数法

计算机里用二进制科学计数法表示小数,sofloat:32位double:64位二进制表示法:符号位数阶码位数尾数位数float:

计算机里用二进制科学计数法表示小数,so


float: 32位

double : 64位


二进制表示法:     符号位数   阶码位数     尾数位数

float                  :      1          8             23

double              :      1         11           52



-----十进制数字转为浮点数二进制科学技术法过程--------------

1. 数字(10)= 整数部分+小数部分

          a.  整数部分---> 16进制---->二进制 (高位的0去掉)

          b: 小数部分转为二进制数字,与十进制的对应关系如下

                             十进制数           二进制数

                            2的-1次方           0.1

                            2的-2次方           0.01

                            2的-3次方           0.001

                   依此类推,即,0.5(10)对应0.1(2), 2的-n次方中的n对应小数点后,二进制的1所在位数

                   据此,把十进制数字拆分为 0.5*0+0.25*0+....  的形式,并根据二进制数和十进制数的对应关系转为二进制数

           c. 数字(10)的二进制数即为    整数部分二进制数  .   小数部分二进制数

           d. 二进制数小数点左移至最高位1的后方,去掉最高位1,剩余部分即为位数部分,不足23位的,低位补0

2. 小数点左移量+2的阶码位数减去1的次方-1 --->16进制---->2进制,即为阶码部分 

3. 如果是正数,则在阶码二进制数字前补一个0; 负数在阶码数字前补0至阶码最高位,符号位填1

4. 组合符号位+阶码部分+尾数部分 , 即为该数字的浮点数二进制科学计数法表示方式。


 ---------------------举例------------------------------

例1. 38414.4(10)转为double型

      1.       符号位为0,价码11位, 尾数52位

                       38414.4=38414.4+0.4 ;

                       38414(10)= 960E (16)= 1001 0110 0000 1110 (2); 0.4(10) =0.5×0+0.25×1+0.125x1+0.0625x0+0.03125x0...= 0.0110 ... // 此处无法除尽,要算满36位,                                                                                                                                                                                                                           以补足加上整数部分后,整个尾数部分要有52位

                       38414.4(10)= 1001 0110 0000 1110 . 0110 ....(2)

                       小数点左移15位即为 1. 001 0110 0000 1110 0110...   x 2的15次方,去掉最高为的1后,尾数 001 0110 0000 0110 ...

      2.  小数点左移量为15; double的阶码位数为11位,即偏移量修正值为 2^(11-1)-1=1023;

           15+1023=1038(10)---->  40E(16)---->0100 0000 1110 (2)

       3. 正数 ,不需要扩展

       4. 阶码+尾数,最终结果   即为double 型  0100  0000 1110  001 0110 0000 0110.... (尾数部分的小数要算满到补足尾数的52位)

 


例2. -12.5(10)转为 float 型

  1. 符号位 位1, 阶码8位, 尾数 23位

            12.5=12+0.5= 1100.1 (2)

             小数点左移3位, 即为  1.1001. 去掉最高位1, 尾数部分为 1001

   2.   小数点左移量为3; float阶码位数为8,即偏移量修正值为2^(8-1)-1=127;

              3+127=130(10) --->82(16) ---> 1000 0010(2)

  3. 负数,符号位为1

  4. 符号位+阶码+尾数,最终结果为 1 1000 0010 1001 0000 0000 0000 000






推荐阅读
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • 自Emacs 24.1版本起,Emacs引入了ELPA(Emacs Lisp Package Archive)作为其内置的包管理系统,用于管理和安装来自互联网的扩展插件。本文将指导您如何配置Emacs以使用MELPA这一知名且丰富的第三方插件源。 ... [详细]
  • 本文详细介绍了在天正CAD中如何调整和修改尺寸标注的方法,包括改变标注数字大小、修改文字样式、调整标注比例等实用技巧。 ... [详细]
  • 炫龙T50游戏本深度评测:值得入手吗?
    2017年初,随着英特尔第七代酷睿处理器和英伟达GTX 1050/1050 Ti新平台的推出,各大OEM厂商迅速更新了自家产品线。炫龙也不例外,推出了搭载最新硬件的T50游戏本。本文将对这款产品进行全面评测。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • C# 实现可浮动工具栏功能
    本文介绍如何在 C# 中实现一个可浮动的工具栏,即工具栏可以从其初始位置拖出,并且可以重新拖回原位。通过创建一个新的窗口作为工具栏的容器,并利用 .NET Framework 提供的 ToolStrip 控件,可以轻松实现这一功能。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本章介绍了TCP/IP协议族中的链路层,其主要功能是为IP模块发送和接收IP数据报。链路层还支持一些辅助性协议,如ARP。此外,本文详细探讨了不同类型的链路层技术及其应用。 ... [详细]
  • 单元测试:使用mocha和should.js搭建nodejs的单元测试
    2019独角兽企业重金招聘Python工程师标准BDD测试利器:mochashould.js众所周知对于任何一个项目来说,做好单元测试都是必不可少 ... [详细]
author-avatar
Binggo89
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有