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中项 ...
随机推荐
- 修改GIT密码
修改GIT本地密码 控制面板->用户账户和家庭安全->凭证管理器->普通凭证:git:hhtp://*****
- LTS本地搭建详述
由于工作项目中使用LTS作为消息队列,这几天有空正好研究一下. 1. 先去GitHub上下载源码:https://github.com/ltsopensource/light-task-schedul ...
- Linux 信号signal处理函数
转自:http://www.cnblogs.com/taobataoma/archive/2007/08/30/875662.html alarm(设置信号传送闹钟) 相关函数 signal,slee ...
- 初识Git->GitHub
这不是一篇教程,这是学习过程的一个记录,初次使用GitHub的小白请移步文章末尾的参考链接, 先了解Git是什么东西 Git的工作流程 操作Git 练习使用 边用边学 #--------------- ...
- Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
目标需求 实现一张小图片,被点击后变成一个在整个屏幕上显示的大图片.类似于微信朋友圈的图片. 实现流程 1.Fresco基本初始化 2.下载并且导入ZoomableDraweeView 它是实现大图的 ...
- 2018-2019-2 20165205 《网络对抗技术》 Exp6 信息收集与漏洞扫描
2018-2019-2 20165205 <网络对抗技术> Exp6 信息收集与漏洞扫描 实验目标 掌握信息收集的最基本技能与常用工具的方式 实验内容 各种搜索技巧的应用 DNS IP注册 ...
- 解决uni-app props 传递数组修改后不能使用问题
1.子组件页面结构 //NoticesMarquee 组件 <view v-for="(item, index) in tempList" :key="index& ...
- Java2E中的路径问题
本节主要介绍: 1.request.getContextPath()-----项目的发布的根路径 2.request.getRealPath('t')----t目录在当前磁盘中的物理位置,包括盘符,文 ...
- springboot之拦截器
拦截器: package com.example.demo; import org.springframework.context.annotation.Bean; import org.spring ...
- SQLserver登陆报错
https://blog.csdn.net/captain618/article/details/52331372 今天也不知道sql server抽了什么风,无论是windows登录还是sa登录,登 ...