float的表示范围为什么比long大

news2024/10/5 15:32:18

●很多人会有一个疑问, 一个用来表示小数的 float 为什么表示的范围会比 long 还要大呢 ?
●这次, 咱们就来详细说一说这个事情
从长计议
●聊到这个话题, 我们就要从计算机存储数字这个位置说起了
●计算机存储数字的方式其实就是 : 二进制
二进制是计算机中最基本的数字存储方式,所有的数字都是以0和1的二进制数表示的。计算机中的内存和处理器等硬件组件都是以二进制为基础来设计的。计算机通过将数字转换成二进制数,然后以二进制形式存储在内存中。
●进制 : 其实就是我们数数的时候进位的方法
在这里插入图片描述

●也就是说, 我们的数字包括其他内容在内, 都会转变为二进制的形式存储起来
●例子:
○一个数字是 6, 转化成二进制以后就是 110
○那么在计算机存储的时候, 其实存储的就是 110

单位

●我们除了知道存储方式以后, 还要知道一个事情, 就是计算机的存储单位
●刚才我们说了, 每一个数据其实都是按照二进制的形式存储的
●在计算机的二进制存储中,每一个二进制数位称为一个位(bit), 每8位二进制数被称为一个字节(byte),通常表示为8个0和1的序列
●字节(B), 就是我们通常计算机中的一种存储单位而已, 我们一般的计算机都是按照字节来存储的
●例子 :
○有一个数字是 0, 二进制转换以后是 0, 那么就会占一个 位
○有一个数字是 1, 二进制转换以后是 1, 那么也是会占一个 位
○但是我们思考一下, 存储的时候, 就是占了两个位, 可是他俩不能放在一起存储啊
○一旦放到一起, 到底是 01 还是 10 还是 一个 0 和 一个 1 呢 ?
●所以, 所有的数据存储都会按照自己来存储, 也就是 byte
●换句话说, 就是一个数字哪怕是一个位, 那么存储的时候也会占据一个字节的位置
○也就是说 : 一个数字是 1, 二进制以后是 1, 因为要占据一个字节
○会把这个 1 变成 0000 0001 这样的形式来存储
○这样就刚刚好占据了一个字节的位置
●根据上面的说法来看, 一个自己(byte) 存储的最大范围就是
○1111 1111 也就是 255 这个数字
○但是我们考虑到还有正负数的关系, 所以一个字节里面还要有一位表示正负的位
○所以, 其实就是 -128 ~ 127 之间的取值范围
●问题来了
○那么 -129 或者 300 这些数字怎么存储呢 ?

不同的数字类型
既然一个字节只能存储 -128 ~ 127 范围内的数字, 那么其他的数字怎么办呢, 不存了吗 ?
这个时候, 我们就要来聊一下数字的存储方式了(以 Java 或者 C 或者 C++ 语言为例)
byte
如果以 byte 定义一个数字, 就是告诉你的电脑, 我要申请一个字节的位置存储数据
那么电脑会分配给你一个字节来存储当前数据, 所以只能存储 -128 ~ 127 之间的数字

short
如果以 short 定义一个数字, 就是告诉你的电脑, 我要申请两个字节的位置来存储数据,那么电脑会分配给你两个字节来存储当前数据,一个字节有 8 个位, 那么两个字节就是 16 个位。
换句话说, 如果以 byte 的形式存储数字1, 那么是 0000 0001
如果以 short 来存储一个数字1, 那么是 0000 0000 0000 0001
所以 short 存储数字的最大范围就是 -32,768 到 32,767

int
同样的道理, int 也可以用来定义存储一个数字 int 表示的数字会占四个字节的位置, 也就是 32 位
取值范围就是 -2,147,483,648 到 2,147,483,647

long
同样的道理long 表示的数字会占八个字节的位置, 也就是 64 位
取值范围就是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
你看这样就好理解的多了

long 类型
long 这个类型很有意思,在不同的解析器或者编译器内, long 的表示形式不一样,上面我们说的,long 在 java, c, c++ 内都是表示 64位, 也就是 8 个字节的位置,但是long 在 javascript 内。
根据 js 解析器来分析,long 就表示 32 的数字, 也就是占 4 个字节的位置
取值范围就是 -2,147,483,648 到 2,147,483,647
好了,到现在为止, 我们知道了 long 是怎么存储的,接下来该到了 float 了

存储小数
刚才说完了整数, 接下来我们就来说一说小数
在计算机存储小数的时候有两种方法

1.定点数表示法
定点数表示法是指把小数点固定在某个位置上,用整数来表示小数部分的一种方法。通常使用定点数表示法的情况下,小数点的位置被固定在一个确定的位置上,比如在小数点后一位或两位。
例如,如果将小数点固定在第一位,那么可以把小数0.123表示为整数123。如果将小数点固定在第二位,那么可以把小数0.123表示为整数1230。
这不是我们需要的, 就不纠结了

2.浮点数表示法
浮点数表示法其实就是浮动小数点的方法来表示一个小数
我们通常会分为单精度浮点数和双精度浮点数
这个才是我们纠结的事情, 所以要详细解释一下
详细了解一下浮点数

1.单精度浮点数
单精度浮点数的存储占用 4 个字节, 也就是 32 位
其中第一个位表示的是 符号, 也就是 正负数,其中第二个到第九个这 8 位来做指数占位,最后就是尾数占 23 位

在这里插入图片描述
表示范围约为 1.4E-45 到 3.4E+38,精度为大约7位有效数字

2.双精度浮点数
双精度浮点数存储占用 8 个字节, 也就是 64 位
其中第一个位表示的是 符号,其中第二个到第十二个这 11 位来做指数占位,最后就是位数占 52 位
表示范围约为 4.9E-324 到 1.8E+308,精度为大约 15 位有效数字

结论
事已至此, 我们该准备的都准备好了 在 JavaScript 解析器内
long 表示的是 32 的数字, 取值范围就是 -2,147,483,648 到 2,147,483,647
float 表示的是 32 位浮点数, 因为有指数加成, 取值范围就是 1.4E-45 到 3.4E+38
所以我们才会说, float 的取值范围会比 long 还要大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/391369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java学习笔记 --- jQuery

一、jQuery介绍 jQuery,顾名思义,也就是JavaScript和查询(Query),它就是辅助JavaScript开发的js类库。它的核心思想是write less,do more(写得更少,做得更多)&#xff0c…

2023王道考研数据结构笔记第五章——树

第五章 树 5.1 树的基本概念 树是n(n≥0)个结点的有限集合,n 0时,称为空树。 空树——结点数为0的树 非空树——①有且仅有一个根节点 ​ ②没有后继的结点称为“叶子结点”(或终端结点) ​ ③有后继的结…

webStorm svn不显示的问题

看图就行了,怎么下载安装我就不说了,网上一搜全是

<JVM上篇:内存与垃圾回收篇>13 - 垃圾回收器

笔记来源:尚硅谷 JVM 全套教程,百万播放,全网巅峰(宋红康详解 java 虚拟机) 文章目录13.1. GC 分类与性能指标13.1.1. 垃圾回收器概述13.1.2. 垃圾收集器分类13.1.3. 评估 GC 的性能指标13.2. 不同的垃圾回收器概述13.…

JavaScript基础一、简介

零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…

1.认识网络爬虫

1.认识网络爬虫网络爬虫爬虫的合法性HTTP协议请求与响应(重点)网络爬虫 爬虫的全名叫网络爬虫,简称爬虫。他还有其他的名字,比如网络机器人,网络蜘蛛等等。爬虫就好像一个探测机器,它的基本操作就是模拟人的行为去各个网站溜达&am…

Modbus转profinet网关连接Smart PLC与ABB变频器实现Modbus通信

本案例讲述了modbus转profinet网关,在系统改造中把ABB变频器接入到Smart PLC的Profinet总线上,PLC不用编程实现Profinet转modbus的协议互转,并且SmartPLC485口连接触摸屏采集数据,完成对变频器读写控制 网络拓展图如下图所示&…

达梦数据库运行内存参数配置学习笔记

一、设置运行中的数据库参数 SP_SET_PARA_VALUE(2,MAX_SESSIONS,500) 设置数据库运行参数,参数为 1 表示获取 INI 文件中配置参数的值,为 2 表示获取内存中配置参数的值 二、修改dm.ini数据库运行参数文件,重启数据库 不能动态修改dm.ini参数…

【k8s】安装dashboard以及报错处理

安装步骤: 点击进入dashboard 的 GitHub - kubernetes/dashboard: General-purpose web UI for Kubernetes clustershttps://github.com/kubernetes/dashboard 查看当前k8s版本对应的dashboard版本,点击右边releases 执行对应版本指令安装(我的k8s是v…

近自由电子近似

假设 potential 的变化是非常小的 我们可以找到一条平均线 代表的就是我们的平均值 这样我们用原来的 就可以得到一个 和平均的这条线相比,上下变化不大,这个对我们薛定谔方程求解能带来很大的便利 我们就可以得到一个平均势场 这样的话,…

40-Golang中的文件

Golang中的文件基本介绍文件的打开和关闭读文件操作应用实例写文件操作实例判断文件是否存在基本介绍 文件在程序中是以流的形式存在的 流:数据在数据源(文件)和程序(内存)之间经历的路程 输入流:数据从数据源到程序之间的路径 输出流:数据…

【C++知识点】多态

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…

Java与Winform进行AES加解密数据传输的工具类与对应关系和示例

场景 AndroidJava中使用Aes对称加密的工具类与使用: AndroidJava中使用Aes对称加密的工具类与使用_霸道流氓气质的博客-CSDN博客 上面讲的Java与安卓进行数据传输时使用AES加解密的示例工具类。 如果Java需要与其他第三方平台比如Winform程序进行数据传递时也需…

一文吃透前端低代码的 “神仙生活”

今天来说说前端低代码有多幸福? 低代码是啥?顾名思义少写代码…… 这种情况下带来的幸福有:代码写得少,bug也就越少(所谓“少做少错”),因此开发环节的两大支柱性工作“赶需求”和“修bug”就…

智能氮气柜相对于传统氮气柜的优点分析

智能氮气柜是利用氮气置换柜内湿气从而进行除湿,氮气经过流量计,进入智能氮气控制盒,氮气没有氧气和水分,与潮湿气体的比重不同,进入柜内排掉湿气降湿。智能氮气柜在传统氮气柜的基础上加上了智能控制系统,…

从传统数据库痛点看分布式数据库选型问题

本文转载自:OceanBase 社区 作者简介:蔡鹏,拥有十多年DBA工作经历,曾就职于饿了么、蚂蚁集团,现任货拉拉数据库部门负责人,负责数据库、缓存,消息队列的管理与平台研发工作。 引言 近年来&…

反诈老陈自曝2022年收入133万

我是卢松松,点点上面的头像,欢迎关注我哦! 反诈老陈自曝2022年收入133万,“缴税近40万,捐赠84万”,曾称网络上得到的收入分文不取。老陈自曝引起了广泛热议。 100万的打赏让老陈离职做直播 相较于普通人…

统计学基础:置信区间和p值知识

引言小伙伴们,今天我们要来聊聊置信区间和p值这两个看起来超级相关的概念。咱们先来说说置信区间,它是一种区间估计,相当于给你的样本数据画了一个“框框”,告诉你总体数据的真实值很可能在这个框框里。就好像你买了一个锅&#x…

CS:GO头号特训添加bot + CS:GO控制台指令大全

CS:GO头号特训添加bot CS:GO控制台指令大全 我是艾西,在我们玩csgo时总是会有一些自己的下想法以及想和小伙伴们一起玩的快乐,今天我跟大家简单的说一下头号特训 头号特训模式下单人或多人跑图的相关指令,帮助玩家熟悉头号特训的玩法、特殊道…

写作利器之Markdown编辑套装

简述 作为一名习惯使用Markdown写作的重度用户,并且经常有发布文章需求的作者来说,一套完善的写作发布套装就显得的很重要了。 所以就有了以下的使用体验,本文大概能解决的问题: 1.由于网络问题或编辑器原因部分网站粘贴后的mar…