因为要参加软考了(当然也只有考试有这种魅力),我得了概浮点数转化为二进制表示这个最难的知识点(个人认为最难)。俺结合大量的从网上收集而来的资料现整理如下,希望对此知识点感兴趣的pfan有所帮助。

基础知识:

十进制转十六进制;

十六进制转二进制;

IEEE制定的浮点数表示规则;

了解:

目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2——即把一个浮点数表示为尾数乘以2的指数次方再添上符号。下面是具体的规格:

符号位 阶码 尾数 长度

float     1          8        23      32

double          1         11        52      64

以下通过几个例子讲解浮点数如何转换为二进制数

例一:

已知:double类型38414.4。

求:其对应的二进制表示。

分析:double类型共计64位,折合8字节。由最高到最低位分别是第63、62、61、……、0位:

最高位63位是符号位,1表示该数为负,0表示该数为正;

62-52位,一共11位是指数位;

51-0位,一共52位是尾数位。

步骤:按照IEEE浮点数表示法,下面先把38414.4转换为十六进制数。

把整数部和小数部分开处理:整数部直接化十六进制:960E。小数的处理:

0.4=0.5*0+0.25*1+0.125*1+0.0625*0+……

实际上这永远算不完!这就是著名的浮点数精度问题。所以直到加上前面的整数部分算够53位就行了。隐藏位技术:最高位的1不写入内存(最终保留下来的还是52位)。

如果你够耐心,手工算到53位那么因该是:38414.4(10)=1001011000001110.0110011001100110011001100110011001100(2)

科学记数法为:1.001011000001110 0110011001100110011001100110011001100,右移了15位,所以指数为15。或者可以如下理解:

1.001011000001110 0110011001100110011001100110011001100×2^15

于是来看阶码,按IEEE标准一共11位,可以表示范围是-1024 ~ 1023。因为指数可以为负,为了便于计算,规定都先加上1023(2^10-1),在这里,阶码:15+1023=1038。二进制表示为:100 00001110;

符号位:因为38414.4为正对应 为0;

合在一起(注:尾数二进制最高位的1不要):

01000000 11100010 11000001 110 01100  11001100  11001100  11001100  11001100

java浮点数转二进制_浮点数转换成二进制相关推荐

  1. 100转换成二进制 java,一段简单的java代码,十进制转二进制

    一段简单的java代码,十进制转二进制 mip版  关注:188  答案:5  悬赏:40 解决时间 2021-01-23 23:14 已解决 2021-01-23 05:43 代码如下,希望可以帮我 ...

  2. java十进制转换成二进制

    十进制数转二进制数,跟据不同的开发语言其转换方式有很多,在Java中如果相把一个十进制的整数来转换成二进制那是举手之劳,非常简单,只要用Integer.toBinaryString(int)方法就可以 ...

  3. java十进制转二进制(输入一个十进制数将其转换成二进制)

    十进制数转二进制数,跟据不同的开发语言其转换方式有很多,在Java中如果相把一个十进制的整数来转换成二进制那是举手之劳,非常简单,只要用Integer.toBinaryString(int)方法就可以 ...

  4. java将图片的url转换成File,File转换成二进制流byte

    package com.xqy;import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //java将图片的 ...

  5. java中实现的十进制转换成二进制的简单代码

    1.思路 我们可以使用简单的数学计算方法对十进制数进行二进制转换. 用这个十进制的数不停的除以2取它的余数,直至这个数为0,用30这个数举个例子: 30 / 2 = 15 .........0 15 ...

  6. Java将图片转换成二进制,将二进制转换成图片

    Java将图片转换成二进制,将二进制转换成图片 static BASE64Encoder encoder = new sun.misc.BASE64Encoder();static BASE64Dec ...

  7. php 将图片转成二进制,php怎么把图片转换成二进制_后端开发

    php如何去掉数组的key_后端开发 在PHP中可以使用"array_values"函数去掉数组的key,该函数的作用就是返回包含数组中所有的值的数组,其语法是"arra ...

  8. mysql 图片转为二进制_如何把图片转换成二进制存入数据库

    public static byte[] imgBytesIn;//用来存储图片的二进制 Stream ms; byte[] picbyte; //在创建数据库链接,测试链接成功后,在高级里可自动生成 ...

  9. python十进制小数转二进制_在python中如何将十进制小数转换成二进制

    在python中如何将十进制小数转换成二进制 在最近的学习中发现博客园里面找不到如何在python中如何将十进制小数转换成二进制,所以我用土方法写了一个超级简单的转换方法(不过转换出来的数只是形式上是 ...

  10. python 浮点数精度丢失_浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源...

    浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源 无论在java python javaScript里面都存在 1+ 2!== 3 问题,这个问题的产生根源在于计算存储数字是二进制,对无限循环小 ...

最新文章

  1. 求两个有序数组的中位数或者第k小元素
  2. 微信小程序用wxs实现手机号码用****代替
  3. if else和switch的效率
  4. 【Luogu】【关卡2-2】交叉模拟(2017年10月)
  5. 请解释Spring Bean 的自动装配?
  6. element-ui表单校验
  7. Class create, device create, device create file
  8. 还不会用typedef?C语言typedef的详细用法总结,一篇解决你的困惑。(学习笔记2--typedef设置别名)
  9. c++primer 第2章 书上例子 资料截图等
  10. python中的with使用方法[探索5]
  11. 蓝牙hci主要作用是什么_我的“我”是您的“您”:为什么为HCI精调Deixis很困难
  12. 超详细的Redis实战笔记
  13. JPush极光推送的原理
  14. 谷歌 发布android 8,2017谷歌大会正式发布Android 8.0!
  15. cmd是计算机语言吗,cmd的含义和作用
  16. android obb在哪,安卓手机如何打开.obb文件?
  17. 蚂蚁算法python_Python编程实现蚁群算法详解
  18. 多御安全浏览器安卓版迎来重大更新:新增分享二维码功能
  19. 布袋除尘器过滤风速多少_太原布袋式除尘器过滤风速一般多大
  20. google play 此应用使用的结算功能版本已不能受支持。

热门文章

  1. [Python+debug] 设置Python环境变量-Windows10
  2. postgres数据库入门, python 操作postgres
  3. 使用help()输入keywords查看python中定义的关键字
  4. Codeforces976D Degree Set 【构造】
  5. 引用数据类型Scanner,Random
  6. 一道面试题:用多线程求1000以内的素数有多少个?并给出消耗时间
  7. 天猫标的就是虚价,果然败家节啊
  8. .NET之我见系列 - 类型系统(上)
  9. [转载] python 中numpy快速去除nan, inf的方法
  10. [转载] Python十大装B语法