java 小数转换成二进制
32位单精度二进制 = [1个符号位] [8个阶码位] [23个尾数位]
64位单精度二进制 = [1个符号位] [11个阶码位] [52个尾数位]
小数 = [正负符号位] [整数部分] . [小数部分]
8位阶码位移码偏移量127,11位阶码位移码偏移量1023
一、小数转换成单精度二进制
以32位单精度为例:
小数=-36.35
第一步:符号位,负用1表示,正的用0,所以[1个符号位] 是1
第二步:整数直接转换成二进制
十进制36 = 二进制0010 0100
第三步:将小数转换成二进制
十进制0.35 = 二进制 1001 1001 10001 1001 其中1001循环
计算过程: 0.35 x 2 = 0.7取整得0 取上次结果的小数部分乘以2
0.7 x 2 = 1.4取整得 取0.7的小数部分即0.7乘以2
0.4 x 2 = 0.8取整得 取1.4的小数部分即0.4乘以2
0.8 x 2 = 1.6取整得 取1.6的小数部分0.6乘以2
0.6 x 2 = 1.2取整得 取上次结果的小数部分乘以2
0.2 x 2 = 0.4取整得
0.4 x 2 = 0.8取整得
...循环
第三步:移动小数点计算阶码
整数二进制.小数二进制
= 1001 1001 10001 1001
移动小数点,使二进制变成1.xxx*2n形式(规格化)
=001.0 0100 0101 1001 1001 1001 10001 1001*25
去掉1.xxx前面的0
=1.0 0100 0101 1001 1001 1001 10001 1001*25
指数的真值是5加上(8位阶码位移码偏移量127)=132
5 + 127 = 132
132的二进制是1000 0100 所以[8个阶码位]是1000 0100
第四步:取1.xxx形式小数点后23位得到[23个尾数位]=0 0100 0101 1001 1001 1001 10001 1001 .. (取23位)
第五步:组合二进制
32位单精度二进制 = [1个符号位] [8个阶码位] [23个尾数位]
= [1] [1000 0100] [0 0100 0101 1001 1001 1001 10001 1001 .. (取23位)]
= 1000 0100 0 0100 0101 1001 1001 1001 10001 1001 .. (取23位)
双精度同理
二、二进制转单精度小数
以0011 1001 0010 1011 1110 1000 000 0000为例
第一步:分三段
0 0111 0010 010 1011 1110 1000 0000 0000
[1个符号位] [8个阶码位] [23个尾数位]
0表示正数
第二步:计算指数
0111 0010阶码=十进制114,减去8位阶码位移码偏移量127
114 - 127 = -13
在23位尾数前加1.变成 1.[23个尾数],然后向左移动13位(负数向左,正数向右)-- 和坐标轴方法一样
010 1011 1110 1000 0000 0000
第三步:计算小数
转换成小数=2-14 + 2-16 + 2-18 + 2-20 + 2-21 + 2-22 + 2-23 + 2-24 + 2-26
=0.00008197128772735595703125
java 小数转换成二进制的更多相关文章
- 将整数转换成二进制的java小程序
首先我们知道,将整数转换成二进制是将整数除二取余将最后除得的数和得到的余数从下向上写,组成得到的二进制数. java程序实现如下: public class ChangeToErjinzhi { pu ...
- java将图片转换成二进制
package com.oumyye.图片; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; imp ...
- java中如何把图片转换成二进制流的代码
在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...
- php将文件转换成二进制输出[转]
header( "Content-type: image/jpeg"); $PSize = filesize('1.jpg'); $picturedata = fread(fope ...
- [转]C#将image中的显示的图片转换成二进制
本文转自:http://www.cnblogs.com/shuang121/archive/2012/07/09/2582654.html .将Image图像文件存入到数据库中 我们知道数据库里的Im ...
- PDF转换成二进制字符串写入 HTTP 输出流
最近项目需要做电子签章,需要网页打开PDF签章后保存:正好复习哈二进制和流的转换: 文件转换成二进制字符串写入HTTP输出流 protected void Page_Load(object sende ...
- eclipse下将普通的java工程转换成web工程
开发过程中需要对普通的java工程转换成动态的web工程,网络上查询了资料很简单的几步操作就可以搞定,操作步骤如下: 编辑.project 修改以下配置 <nature>org.eclip ...
- C#将image中的显示的图片转换成二进制
原文:C#将image中的显示的图片转换成二进制 1.将Image图像文件存入到数据库中 我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才 ...
- Myeclipse Java项目转换成Maven项目
1.在Eclipse中Java项目转换成Maven项目可以在项目右键-->configure-->Convert Plug-in projects.. 就可以.而在myeclipse中项 ...
随机推荐
- selenium测瀑布流UI页面的Python代码
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdri ...
- 自动化接口测试(java)
githup地址:https://github.com/SailFan/autoTestMock 包结构: common包 ExtentTestNGIReporterListener.java 为测试 ...
- Vue ElementUI 按需引入
一.element UI组件的单独使用(第一种方法): 1.cnpm install babel-plugin-component -D 2.找到.babelrc 配置文件 ...
- codeblock 生成和使用makefile
下载cbp2make 文件名:cbp2make-stl-rev138.tar.gz 里面有个cbp文件用codeblock打开,编译,生成的bin目录下有个执行文件. 使用命令生成Makefile . ...
- 通过JS 给这个input加一个事件 获得焦点,回车事件绑定
通过JS 给这个input加一个事件 就是获得焦点就行了 window.onload = function(){ var oInput = document.getElementById(" ...
- C#;DataTable添加列;DataTable转List泛型集合;List泛型集合转DataTable泛型集合;
给DataTable添加列 string sql = "select * from cgpmb order by code"; DataTable dt = Bobole.Data ...
- 【人工智能】从零开始学好人工智能,AI知识体系和框架
写在前面: 最近公司的业务方向开始向AI方向改变(人工智能+文娱),但是现阶段AI方面的知识还没有储备,所以作为测试,也开始学习这方面的知识,不掉队. 知识储备: 1.阶段一-高等数学 高 ...
- MVC的开发模式简单介绍
MVCM model 模型 实体类和业务和dao dao(数据库访问对象)V view 视图 jspC controller 控制器 servlet 作用:视图和逻辑分离 开发设计顺序 1.设计数据库 ...
- upload三种上传方式(上)---Servlet---post---commons-fileupload.1.2.1.jar方式请求上传文件
上传前进行的配置选项: 1.在下方的Servers中,右键你的tomcat--open,选中下面两个配置. 第一个:Serve modules without publishing 作用:tomcat ...
- Java初学者应该注意的学习问题
作为初学者,在刚开始学习的时候,一定会走很多弯路.但其实很多弯路是不必走的,会浪费很多时间,导致学习效率大打折扣.今天小编给大家讲述一下,作为一个Java初学者,在开始学习的时候应该注意的问题,应该从 ...