单精度浮点数

单精度浮点数格式 是一种计算机数据格式,在计算机存储器中占用4个字节(32 bits),利用“浮点”(浮动小数点)的方法,可以表示一个范围很大的数值。

在 IEEE 754-2008 的定义中,32-bit base 2格式被正式称为binary32格式。这种格式在IEEE 754-1985被定义为single,即单精度。 需要注意的是,在更早的一些计算机系统中,也存在着其他4字节的浮点数格式。

定义

第1位表示正负,中间8位表示指数,后23位表示有效数位。

正负号0代表正,1代表负。指数可以是二补码;或0到255,前半代表负,127代表零,后半代表正。

有效数位最左手边的1并不会储存,因为它一定存在。二进制的第一个有效数字必定是1。换言之,有效数位是24位,实际储存23位。

15.900003的二进制存储是[0][10000010][11111100110011001101010]=>1×2的3次方×1.9875004291534424=15.900003433227539

小工具:

http://www.oschina.net/code/snippet_660460_48576

时间: 2024-12-21 13:24:15

单精度浮点数的相关文章

单精度浮点数按存储格式转为整数的程序

/////////////////// #include<cstdio> //----------------- union int_char { unsigned char ch[4]; float i; }; void out_put(union int_char x)//x86是小端对其模式,即最数据的最低位存储在地址的最低位上. { printf("单精度浮点数值为:%f\n",x.i,x.i); printf("存储位置从左到右,从高位到低位依次为 0x

单精度浮点数和有效位数为什么是7位

IEEE754标准 详细描述了单精度浮点数的格式 详查维基百科IEEE_754-1985  描述了包括如何表示( 规约化 非规约化 0 无穷 NAN)这几类以及为什么要如此表示 尾数位数越多,精度越高:指数位越多,可表示范围越大.物理中常用有效数字来描述此概念.https://zh.wikipedia.org/wiki/%E6%9C%89%E6%95%88%E6%95%B0%E5%AD%97 单精度浮点数的有效位数为什么是7位,找到的答案如下: 浮点数的精度取决于尾数部分.尾数部分的位数越多,能

单精度浮点数操作

用数组存储32位单精度浮点数,并且实现有效位右移,有效数加法等,可用于计算机浮点加减法的底层模拟. 1 package com.computerOrganizationAndArchitecture.floatQperation; 2 3 import com.computerOrganizationAndArchitecture.singleprecisionfloat.SinglePrecision; 4 5 /** 6 * Created by XuTao on 2018/12/8 20:

单精度浮点数(float)加法计算出错

场景: 一个float型的变量赋值1170601,加上19000000,结果出现错误. 原因: float占用4个字节(32位)存储空间,包括符号位1位,阶码位8位,尾数23位.浮点数精度与它的尾数有关. 尾数为二进制小数1.m,m为23位的小数.所以浮点数的精度为24位二进制有效位数.2的24次方为16777216. 19000000 > 16777216,做加法计算之后丢失精度出错. 解决方法: 将float用double替换,double占用8个字节(64位)存储空间,包括符号位1位,阶码

线程暂停的方法、基本数据类型包装类、十进制单精度浮点数(32位)存入内存中、TreeSet和TreeMap

使线程暂停执行的方法? 1.Thread类的sleep()方法使线程进入阻塞状态,睡眠指定的时间段. 2.Object类的wait()方法使线程放弃对象锁,进入等锁池,直到获得对象锁后才继续往下执行 3.Thread类的yield()方法平时比较少用,使线程进入就绪状态而不是阻塞状态,也就是说下一个执行的线程可能还是这个线程,当然也可能让给了其他的线程,那么这个线程就暂停了. 4.Java5后的使用Lock接口也可以实现类似于对象锁的功能,优点是比较灵活.可以知道线程获得锁了没有等,比较大的缺点

浮点数问题

(1)浮点数是有理数的集合,有些有理数不能表示,会有舍去误差如0.1等. (2)浮点数可以表示的连续整数也是有限的. 有些脚本语言,比如awk,lua中都是使用浮点数来存储整数的,也就是说,我们在语言中使用的整数,在语言内部是使用浮点数来表示的.我们知道,浮点数的运算中通常存在着一定的误差,所以整数是否能被浮点数精确表示呢?答案是可以,不过不是所有范围的整数都可以被精确的表示.由于浮点数精度的问题,所以浮点数的分布也就呈现出非均匀分布. 先简单介绍一下一个常用的浮点数在计算机中的组成,最常用的浮

《深入理解计算机系统》2.4浮点数

二进制小数 10进制表示方式 2进制表示方式 可以看出二进制小数的小数点没左移一位,相当于除2 但二进制只能表示能写成x*2^y的小数 对于其他值只能近似的表示 IEEE浮点表示 IEEE标准采用类似于科学计数法的方式表示浮点小数,即我们将每一个浮点数表示为 V = (-1)s * M * 2E . s   符号位 M  尾数,是个二进制小数,取值范围为[1,2)(规格化的值),[0,1)(非规格化的值) E   阶码 浮点数的位表示被分为三个部分 s            1个符号位 exp

定点数与浮点数

I.定点数 所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的.通常将定点数据表示成纯小数或纯整数,为了将数表示成纯小数,通常把小数点固定在数值部分的最高位之前:而为了将数表示成纯整数,则把小数点固定在数值部分的最后面,如下图所示: 图中所标示的小数点在机器中是不表示出来的,而是事先约定在固定的位置.对于一台计算机,一旦确定了小数点的位置,就不再改变. 假设用n位来表示一个定点数 ,其中 用来表示数的符号位,通常放在最左位置,并用数值0和1分别表示正号和负号,其余位数表示它的量值.如果定

1.1编程基础之输入输出——04:输出保留3位小数的浮点数

总时间限制:  1000ms 内存限制:  65536kB 描述 读入一个单精度浮点数,保留3位小数输出这个浮点数. 输入 只有一行,一个单精度浮点数. 输出 也只有一行,读入的单精度浮点数. 样例输入 12.34521 样例输出 12.345 来源 习题(2-2) 1 #include <iostream> 2 #include <cstdlib> 3 4 using namespace std; 5 6 int main(){ 7 float a; 8 cin>>a