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中项 ...
随机推荐
- Android学习笔记一之第一个Android程序
/** *Title:总结昨天下午至今天上午的学习成果 *Author:zsg *Date:2017-8-13 / 一.了解Android 1.Android架构 Android大致可分为四层架构:L ...
- int main(int argc,char* argv[]) 的含义和用法
1.基本概念 argc,argv 用命令行编译程序时有用. 主函数main中变量(int argc,char *argv[ ])的含义,有些编译器允许将main()的返回类型声明为void,这已不再是 ...
- Oracle中文排序问题
默认感觉中文是按拼音排序,如果没实现效果,请加上其它排序,例如日期 表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划.部首和拼音排序.1: //按照笔划排序2: select ...
- H5转图片支持保存
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 提取和匹配线特征的一个demo
一.代码来源: https://github.com/drozdvadym/opencv_line_descriptor 二.依赖包:OpenCV 2.4.9 三.Matching的运行结果截图: 四 ...
- 模拟登录,发送amf类型数据
参考 http://blog.csdn.net/amandag/article/details/5666219 以及 稍微修改了一下AMFPost的类 一.登录 登录过程中主要用到标红的3个请 ...
- java并发编程概念
并发:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其 ...
- Linux网络编程学习(十) ----- Socket(第六章)
前言:由于第五章主要介绍了TCP和UDP协议以及两者的包头的字段以及相应的功能,这里就不介绍了,对着字段看功能就好了,后续开始学习第六章 1.Socket Socket实质上就是提供了通信的端点,每个 ...
- 不用安装Oracle客户端
1 pl/sql developer 1.1 下载解压instantclient-basic-nt-12.1.0.2.0. 1.2 在其目录下新建Network/ADMIN/tnsnames.ora文 ...
- python 图片识别灰度
# -*- coding: cp936 -*- from skimage import io,transform,color import numpy as np def convert_gray(f ...