float型变量能存储的最大正值和最小正值

2024-01-23 23:08

本文主要是介绍float型变量能存储的最大正值和最小正值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天写一写我对float变量的理解,我也是学习了网上的一些作者的看法,现在用最白的白话文记录下我对float变量存储格式怎么存储最大值和最小正值的理解。

首先上面的单精度格式大家都知道,IEEE(Instituteof Electrical and Electronics Engineers (IEEE)指定的格式,也许是因为这样设计更加科学吧。

float型变量存储格式被安排32个bits(1个bit就是一个由并联和串联的电路组合,可以在command指令下让其通电(0)还是断电(1))。其中如图所示,31位被安排了符号,指数位安排了8个bits(其中30号位也是符号位,是指数的符号位),尾数位安排了23个bits

随机选一个十进制数23.125,转为二进制数为:10111.001

换算成科学计数法10111.001=1.0111001 * 2^4

其中标红部分(0111001)就是将要保存到float格式中的尾数位(那么二进制整数位1为什么不用保存呢,是因为这是个定值,保存在隐藏位了)

指数4就是将要保存到float格式中的指数位,4是个十进制数,保存到计算机中需要换算成二进制,即100,但是这样还不能直接存储到指数位置,这是因为指数位采用移位存储技术,意思就是,8bits的空间可以本可以存储256个十进制正值,但是因为由于有负指数的需求,所以IEEE指定127到0计为负,127 到 255为正,且255和0表示无穷值,不能输出!所以正指数最大值只有127是可以输出实际值,负指数只有-126是可以输出实际值的。

当指数为+4时,指数位置需要表示的十进制数就是127+4=131,换算成二进制为10000011才能被计算机认为是4!

那么,十进制数23.125的储存到float格式中就是

0

1

0

0

0

0

0

1

1

0

1

1

1

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

那么,我们反过来算float格式中能存储的最大数值,当指数位最大值为127,尾数位为.11111111111111111111111时,

max=1.11111111111111111111111*2^1273.4*10^38

当指数位最大值为-126,尾数位为.0时,

min=1*2^-1261.175*10^-38

这篇关于float型变量能存储的最大正值和最小正值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/637816

相关文章

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二