详细讲解int、float与double的区别

article/2025/8/21 11:32:33

最近为了看一下float的精确度仔细看了一下这三种数据在内存中的样子,看了一下别人的博客发现大家对精度都有这不同的定义,我自己也简单画了一下。

下面来主要讲解一下int、float与double三者的区别与详解

一、int(最简单的一种)

int数据类型在内存中占用了4个字节byte(4*8个bit比特)就是32个比特位。第一位代表int的正负,后31位存储数据。当int取最大值时相当于31个1(1*2^30+1*2^29+1*2^28+....+1*2^0)可以转化为有32位切为1其他为0之后再减去1(1*2^31-1)。换算一下大概是21亿多。

二、float(单精度浮点型数据)

在说float之前先说一下二进制与十进制的小数部分的转化。

  • 小数十进制转二进制:十进制的小数每次*2取整数部分的值作为当前的位数上的值。例如0.25:0.25*2=0.5(整数部分为0,二进制第一位为0),0.5*2=1.0(整数部分为1切小数为0不继续了,二进制第二位为1)得出0.25用二进制表示为0.01。

  • 小数二进制转十进制:与整数类似,当前位置*2的负数次方。例如0.01=0*2^0+0*2^-1+1*2^-2=0+0+1/4=0.25

float与int一样都占了四个字节也就是32个比特位,但是存储的含义与int不一样了。其中第一位代表正负,第2-9这八位代表指数,与后23位的底数。

如图为单精度存储方式:

 

  • 符号位(1bit):0位正数,1位负数。

  • 指数位(8bit):用于记录科学计数法中指数数据(由于指数也有正负,所以实际能表示指数的只有7位为-127-128,所以指数部分采用移位存储,存储的数据+127。之前的存储可以理解成01111111代表128,11111111代表-127。采用移位存储之后。这样8位就没有正负之分,00000000代表-127,11111111代表128)。由于指数位全为1的时候有特殊用途(暂时不知道有什么含义),所以指数位真正的取值范围是-127-127。

  • 尾数位(底数位)(23bit):记录科学计数法中的底数部分。

任何一个二进制的科学计数法都可以写成1.xxxxx*2^n,这里的n就是指数位,而尾数最小位00000000000000000000001转化为十进制为0.0000001192092896,但是由于位数变化不足以覆盖0.0000001-0.0000009(00000000000000000000101为5而00000000000000000000110为7所以0.0000006无法表示精度丢失一个)但足以覆盖0.000001-0.000009。所以说float的精度为6-7位(十进制小数点后位数)

例如:8.25转化为二进制时候为1000.01,转化成二进制的科学计数法为1.00001*2^3。所以转化为float在内存中存储的时候为:符号位为0,指数位为(3+127)1000 0010,尾数位为(0.00001)000 0100 0000 0000 0000 0000 最终8.25存储为float的形式为:(0 10000010 00001000000000000000000)

所以float的最大值为1.11111111111111111111111*2^127(科学计数法)= 127个全1的二进制减去一个103个全1的二进制 =

(2^128-1)-(2^104-1)=3.4028234663852886*10^38=3.40282e+038

三、double(双精度浮点型数据)

double占了8个字节,也就是64bit。

  • 符号位(1bit):0位正数,1位负数。

  • 指数位(11bit):指数范围为2^10(-1023-1024)

  • 尾数位(底数位)(52bit):记录科学计数法中的底数部分。

double数据基本与float一致,最大值是1023个全1的二进制减去一个973个全1的二进制=(2^1024-1)-(2^974-1)=1.79769e+308


http://chatgpt.dhexx.cn/article/uN3VCFmj.shtml

相关文章

c++ string转int, double,int,double转string

c string与常用数值变量互转 写了几个字符串与数值变量互相转换的几个函数,每次用到都要上网查一堆,耽误时间,写好放到这里备用。方法有很多,这里列出来测试过能用的,其他方法慢慢添加。以下函数自动判断int或者double…

C++下string类型转double类型

最近coding的时候随手写了std::stod()函数来进行类型的转换,发现输出的时候自动做了小数位的截取 尝试使用std::stold()函数转换成long double类型之后,依旧不能解决问题,输出依旧不是想要的 发现网上对这个问题的解答没有,于是…

double类型转换成int类型

1、案例演示 public class test09 {public static void main(String[] args) {double a 5000.44;double b 100.12;double v a / b;int i new Double(v).intValue();System.out.println(i);System.out.println(v);} } 运行结果: 49 49.944466640031955 2、源…

移动光猫超级管理员密码获取

我的型号是ZN-M142G 一 、开启telnet 1.电脑开启telnet (自行百度) 2.登录192.168.1.1 3.把路由器后台网址替换(如果光猫已经开启telnet请忽略)​​​​​​http://192.168.1.1/getpage.gch?pid1002&nextpagetele_sec_ts…

移动光猫只有一个lan口?其他是电视用,如何增lan口

输入192.168.1.1,用超级账号登陆,(如何得到超级账号呢,可以让维护小区的移动工作人员给你)我发现家里的光猫只有一个lan口,通过超级账号登陆发现,其他三个(lan1~lan3)都分…

移动光猫 烽火HG6145F 获取管理员密码 启用USB存储功能

总结一下移动光猫烽火HG6145F获取管理员密码的过程,从网上没有搜到这个型号,但是可以参考一下相关类似型号,参考链接附后。 1、连接光猫:首先连接好光猫的WIFI,确认可以访问路由默认网关192.168.1.1 2、获取光猫MAC&…

移动光猫连接移动硬盘变成超小型nas【HS8545M5

移动硬盘连接光猫usb接口 一.第一步 先准备好移动硬盘和光猫 我的移动硬盘装了个盒子1TB 连接好usb接口 我家的光猫是华为定制版的 HS8545M5 当然肯定不会这么简单的就完成了 2.这个需要登录光猫的超级管理员打开媒体共享功能的 当然移动公司不会简单给你超级账号的密码 可以…

最新中国移动光猫改桥接方式(中兴ZXHN F663NV9)地域:贵州 适用于动态超密

​ 话不多说,直接开干 1.首先拔掉光纤 2.把电脑网线插进光猫1口 输入管理地址192.168.1.1 ​ 3.接着输入管理员密码,就是光猫背面的那个 进入后台后选择 网络——远程管理 然后复制loid和password以及sn备用 4.然后重置光猫 用针恢复孔5秒以上&…

移动光猫(吉比特TEWA-272G)进入高级管理界面的简单方法

参加中国移动光纤宽带升级千兆活动后,之前通过超级用户身份已调成桥接模式的光猫(GS3101)免费更换成了吉比特TEWA-272G(2021-10-30生产,硬件版本号HV1.0.0.0、软件版本号 V1.0.0.0),只能用新设备后面注明的user和口令进入基础管理界面进行…

移动光猫GM219-s多LAN端口的网络开放

起因 最近(2018.08)装了移动的50M宽带(成都),在默认情况下GM219-S这款光猫总共有4个端口,但是只有LAN1口是可以连接电脑上网,其他的3个端口只能用于电视盒子之类的用途。就是下图这货→_→   …

移动光猫之桥接教程

背景:移动宽带默认是移动光猫拨号,使用的路由模式,但移动的猫太差劲,需要将移动光猫改为桥接模式,改用红米AC2100路由器进行拨号上网。说干就干,开工。 1、获取光猫超级用户和密码。 用户名:C…

网速更稳定,破解移动光猫GM219-S的超级账号及密码,光猫改桥接

前言 我家的宽带是河南的大内网移动500m快带,光猫性能太拉了,时不时就装死,并且网上的大多数教程都没法用,大部分漏洞的接口都堵上了。本来都打算找移动客服扯皮去,突然找到了一个教程拯救了我。 教程地址 教程&…

获取移动光猫(如HS8545M5等设备)pppoe密码明文

有时候忘记了自己的pppoe拨号密码,找回又很麻烦,这里教大家怎么把光猫的pppoe密码明文搞出来 首先使用超级账户登录到你的光猫 超级账户的密码一般是与光猫型号对应,是固定的,上网就型号能搜到(或者与地区相关联&…

获取中国移动光猫H2-2超管密码

最近闲的难受开始闲置利用,将两年前买的我家云和没用的硬盘闲置利用,上网心云,无奈由于中国移动路由器限制,每天收益几分钱,最多1毛1,只能解密家里中国移动光猫开启UPNP了。 家里宽带为:中国移动…

中国移动光猫获取超级密码教程

关键词:中国移动光猫、华为光猫 相关工具: HuaWeiONT_v2.0.7z 下载地址:http://res.extapps.com/pcsoft/HuaWeiONT_v2.0.7zhttp://res.extapps.com/pcsoft/HuaWeiONT_v2.0.7z 华为解密.zip 下载地址:下载 | 华为光猫配置解密工…

陕西移动宽带光猫 GM219-S 路由功能分离

陕西移动宽带光猫 GM219-S 路由功能分离 最近更换了陕西移动的100M宽带。移动公司送的光猫型号为GM219-S,自带路由和无线功能。以下为光猫外形。 装机师傅在调测好宽带后拒绝透露光猫的超级管理员用户名密码,且将光猫设置为猫路由模式。这样我自用的…

重庆地区移动宽带更换光猫

重庆地区移动宽带更换光猫注意事项 为什么要安装移动宽带 我原本是用的电信纯宽带,资费699一年,速率下行100M,上行20M,免安装费用,运营商提供免费提供光猫。原宽带于3月到期,我也觉得资费有点贵&#xff…

修改移动光猫,提升上网速度

家里网络变慢的问题 自从换了移动的100M网络(因为免费才换的!!),发现家里的网络差了好多。一开始还好,到了后面总是出现页面卡顿,网页上不去现象。 经过一番盲猜分析,发现了两个问…

中国移动光猫 GM220-S 改桥接简易教程(安徽移动)

写在前面 光猫(modem)本来就是擅长于光线信号的调制解调,并不一定适合路由(拨号/wifi什么的),虽说现在光猫的性能都还过得去,但本人本着折腾的心态还是想让路由器来担当拨号&路由的重任&…

移动光猫:家庭存储

背景: 最近家里更换宽带,新装移动宽带,送的光猫名称为吉比特无源光纤接入用户端设备具体的型号没有留意,发现上面有U口,有的人认为是调试升级用的,本人不以为然。 个人思路: 本人认为u口可用于…