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中项 ...
随机推荐
- Java——String类中的compareTo方法总结
String类的定义: java.lang 类 String java.lang.Object java.lang.String 所有已实现的接口:Serializable, C ...
- c++ std 最小堆的使用 (用于实现top100之类的功能)
#include<vector>#include<algorithm>#include<iostream> using namespace std; void Pr ...
- 看Spring注解之IOC记录
首先看源码里有些是java的元注解记录的有如下几个: @Inherited注释:指明被注解的类会自动继承.更具体地说,如果定义注解时使用了 @Inherited 标记,然后用定义的注解来标注另一个父类 ...
- jeecg-boot 简易部署方案
jeecg-boot采用前后端分离的方案,前后端代码不在一起.想要部署 一般是通过反向代理实现. jeecg-boot目前支持更好更简单的解决方案: jeecg 在配置文件里面指定了 webapp的存 ...
- 解决laravel使用QQ邮箱发邮件失败
在 laravel 中使用 QQ 发送邮件的时候莫名其妙的出现了如下错误:Connection could not be established with host smtp.exmail.qq.co ...
- keepliave
keepalived的主要功能 1. healthcheck: 检查后端节点是否正常工作 如果发现后端节点异常,就将该异常节点从调度规则中删除: ...
- 查询当前局域网下所有IP和物理网卡地址
WIN+R –> 打开cmd 键入 arp -a
- CSS预处器的了解
到目前为止,在众多优秀的CSS预处理器语言中就属Sass.LESS和Stylus最优秀,讨论的也多,对比的也多. 1.Sass背景介绍 Sass是对CSS(层叠样式表)的语法的一种扩充,诞生于2007 ...
- python字符串 列表 元组 字典相关操作函数总结
1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...
- Linux实操篇
一:用户管理.群组管理 增: 1.指定群组添加账户: groupadd test 创建test用户组useradd -g test(用户组) xiaoming(用户名) ---- 创建us ...