详解浮点型在内存中的存储

作者的话

本文涵盖了浮点型在内存中的如何存储、如何取出、为何有精度丢失等知识点~

浮点型概括

常见的浮点型数据有三种:

  1. 以科学计数法表示的:1e10、1.28e10
  2. 数据后加入字符‘f'的:3.14f、7.76f
  3. 不用科学计数法也不加f:1.22、4.89

第一种表示: 1*10^10 和 1.28*10^10 第二种表示: 用float创建的浮点数,要在后面加’f',不然会默认为double型储。 第三种表示: 用double创建的浮点数,或没加‘f'的float创建数。undefined

浮点数的存储

根据国际标准IEEE754规定,任意的浮点数V都可以表示为以下形式:

  • V=(-1)^S M 2^E
  • S等于0或1,是-1的指数位,0则正数,1则负数
  • M等于有效数字,应大于1,小于2
  • E是2的指数位,是一个有范围的正数

例:

  1. V=5.5
  2. V=9.0

首先我们要知道,十进制的小数点右边第一位,表示10的-1次方,同样,二进制的小数点后一位,是表示2的-1次方

则V=5.5可以分解成:101.1

则V=9.0可以分解成:1001.0

随后,将这个分解后的数字转为大于1,小于2的数,并将小数点移动了几位记下来,这将是E的大小

  1. V=1.011,移动2位,E=2
  2. V=1.001,移动3位,E=3

最后,如果是正数,S为0,如果是负数,S为1。

  1. V=(-1)^0 1.011 2^2
  2. V=(-1)^0 1.001 2^3

这样,你就知道如何表示一个浮点型的数了,由此可见,一个浮点型的数,其大小只与>S、M、E三个变量有关,所以在内存中对于浮点型的存储,只需要存储这三个变量可。

bit位储存模型

  • 第一张图:float的储存模型
  • 第二张图:double的储存模型
  • 图片来自比特科技

这两张图相信以各位的聪明才智,不需过多解释也能看得懂。

我们知道,M是一个大于1,小于2的数,那么不同的M之间只有小数点后面的数不同,如果我们只把M小数点后面的数存起来,取出的时候再加上1,就可以多存一位。

因此,==float的M能存24位==,==double的M能存53位==。

此外,对于E的存储,还有一些别的规定:

因为E是一个无符号的数,只能是正数,但是科学计数法中是可以出现负数的,所以IEEE又规定,E在存入时必须加上一个中间值

  • 对于float,E有8位,取值范围为0~255,存入时需加上255/2=127.
  • 对于double,E有11位,取值范围为0~2047,存入时需加上2047/2=1023.

比如:5.5的E是2,存入时需存2+127=129;9.0的E是3,存入时需存3+127=130.

精度丢失

上述我们说到,二进制小数点后1位是2的-1次方,后2位是2的-2次方......

即,一个浮点型的小数点后面的数,只能用0.5、0.25、0.125......等等数来拼凑起来。

若是我给一个3.141592653579,这在有限的M位下是不可能完整精确地拼凑起来的,于是就有了精度丢失

Look:我把3.14存进a,鼠标放在上面,显示这个数并不是精准的3.14.

这也是为什么,double型能存的数据比float型更为精准。(因为M位更多)

浮点型的取出

  • S的取出:没什么好说的,是1还是1,是0还是0.
  • M的取出:因为只存了小数点后面,取出来后要加上1.
  • E的取出:又分为三种情况,请看细细道来。

1,E全为1,此时若M全是0,则是无穷大,正负看S;若M不全是0,则这个数是NaN(未定义或不可表示的值),至于为什么,我只能说这是未尽事宜,是规定。

2,E全为0,这种情况下在取出E时,float规定E为-126,double规定E为-1022,M取出来后不再加上1,以此来表示一个无限接近于0的数,正负看S。

3,E不全0也不全1,减去127或1023拿出来即可。

浮点数的取出实机演示

如图,我将5.5f存入a;

**随后,取a的地址进行观察。

因为我当前环境是x86,机器为小端存储。**

PS:如果您不明白什么是小端存储,请点击:大小端字节序存储详解

所以a的地址存放的十六进制序列为:40B00000

转换为二进制:0 10000001 01100000000000000000000

观察S、M、E的位置

S:0

E:因为不全是1或全是0,应减去127,0b10000001-127=2

M:0.011+1=1.011

这样,你就把V取出来了。

这时候有同学可能要问了,这把SME三个数装上以后,是1.011*2^2是4.011啊。

请注意:此时是用二进制表示


本文转载于网络 如有侵权请联系删除

相关文章

  • 2、Java基础02 – 【命令行运行HelloWorld】[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。操作步骤:1、新建一个文件夹(可以命名为Java)2、新建一个.txt文本文件,在文件中输入如下代码:publicclassHelloWorld{ publicstaticvoidmain(String[]args){ System.out.println("helloworld");复制}} 3、重命名将文件名改为HelloWorld.java,并创建第一个java源文件4、编译.java文件是java的源文件,但是不能直接运行,必须先被编译成为.class文件才能够执行,java使用javac命令进行编译打开终端,进入放置java源文件的文件夹; 输入javacHelloWorld.java(javac文件名及后缀),在src文件夹里编译出一个HelloWorld.class文件 输入javaHelloWorld运行,运行成功后会看到字符串“helloworld”【注意大小写需要一致,并且没有后缀名.class】 彩蛋:代码解读publicclassHelloWorld{ }public表示这是一个可以公开访问的类cl

  • 细微之处见真章之JSON格式美化

    一、背景今天@段段在技术群里提出一个问题:”如何实现JSON的格式美化“。具体含义是,通过后端代码实现将紧凑的JSON字符串变为更美观的形式。如下面的JSON字符串{\"age\":0,\"name\":\"张三\",\"sex\":\"女\" 转化为如下图的效果:这个问题知道API的人或许一下就可以答上来,不知道的人可能第一反应就是百度。那么是否有更好的解决方式呢?本文重点讲述该如何思考和解决这个问题,重点不是问题本身,希望能够对大家有点启发。二、步骤解决这个问题的办法有很多种,下面是我建议的步骤。最核心的思路是:先找,实在找不到自己造轮子。特别特别特别强调,先思考,再行动。2.1先思考JSON字符串美化的功能在很多网页工具类里常用,按理说JSON的库是不是应该提供了这种功能呢?那么该如何去找是否有这种功能呢??首先想到的就是关键字,由于之前网页上用过提供类似功能的网页,功能描述都是”格式化“,”美化“。而且我们思考一下,如果有这种功能应该叫啥名呢?是不是也应该叫”格式化/美化“呢?沿

  • 文件系统

    文件和路径命名规则扩展名隐藏文件工作目录和主目录绝对路径和相对路径目录结构/bin-基本命令的二进制文件/boot-引导加载程序的静态文件/dev-设备文件/etc-配置文件/home-用户主目录的父目录/lib-共享库文件/lib64-共享64位库文件/lost+found-存放未链接文件/media-自动识别设备的挂载目录/mnt-临时挂载文件系统的挂载点/opt-可选插件软件包安装位置/proc-内核和进程信息/root-root账户主目录/run-存放系统运行时需要的东西/sbin-超级用户的二进制文件/sys-设备的伪文件系统/tmp-临时文件夹/usr-用户应用目录/var-变量数据目录访问权限chmod。chown。磁盘管理列出文件系统的磁盘使用状况-df。磁盘分区表操作-fdisk。格式化文件系统-mkfs。文件系统检查-fsck。挂载/卸载-mount/umount。

  • Spring Beans 自动装配

    Spring容器可以在不使用和元素的情况下自动装配相互协作的bean之间的关系,这有助于减少编写一个大的基于Spring的应用程序的XML配置的数量。ByName使用ByName进行自动装配,beans.xml如下:<?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!--DefinitionfortextEditorbean--> <bea

  • 设计模式 - 建造者模式

    「行情不行,就得多努力」建建:这场疫情啊,让我明白了,有一个房子,能让你稳定住所;有一辆车,能让你出行无忧。 子乾:听这话意思是要买房买车了呢。建建:要不资助点? 子乾:那明天你跟我一起出门挣点。 建建:去哪,在哪个位置?子乾:以前啊,就在那大商场门口就行,一个碗,一根棍,一个铺盖趴一天,天天收入好几百。现在行情不行了呀。 建建:还是给我爸打个电话吧,明天去提车。子乾:那建总要宝马还是大奔,是保时捷还是劳斯莱斯?建建:行吧,那我就要一辆“环环相扣”的吧。那么问题来了,面对众多的车牌,从在厂生产,到4S店销售,再到客户手中,这样一个复杂“车”对象,购买和生产的来龙去脉怎么表示在代码里面? 那这就需要「建造者模式」了。什么是建造者模式?(别名生成器模式)BuilderPattern:Separatetheconstructionofacomplexobjectfromitsrepresentationsothatthesameconstructionprocesscancreatedifferentrepresentations.看不懂看下面: 将一个复杂对象的构建与它的表示分离,使得同样

  • 第一周:数据的描述性统计

    本文首发于简书, 经作者授权后转载, 点击阅读原文可至作者主页查看更多精彩内容! 数据的集中趋势众数:统计学术语,在统计分布上具有明显集中趋势点的数值,代表数据的一般水平(众数可以不存在或多于一个)。修正定义:是一组数据中出现次数最多的数值,叫众数,有时众数在一组数中有好几个。用M表示。理性理解:简单的说,就是一组数据中占比例最多的那个数。中位数:又称中点数,中值。中位数是按顺序排列的一组数据中居于中间位置的数,即在这组数据中,有一半的数据比他大,有一半的数据比他小,这里用m0.5来表示中位数。(注意:中位数和众数不同,众数指最多的数,众数有时不止一个,而中位数只能有一个。)平均数:统计学术语,是表示一组数据集中趋势的量数,是指在一组数据中所有数据之和再除以这组数据的个数。它是反映数据集中趋势的一项指标。解答平均数应用题的关键在于确定“总数量”以及和总数量对应的总份数。众数、中位数、平均数分位数:亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数即二分位数、四分位数、百分位数等。极差:又称范围误差或全距(Range),以R表示,是用来表示统计资料中的变异量

  • iOS中的「回调(callback)」

    本文主要参考:《Object-C编程BigNerdRanchGuide》一书第24章本文适读对象:想系统了解iOS中若干种回调机制的朋友;想初步了解Block语法的朋友。没有自己亲自实现过委托、通告、Block进行回调(传递数据)的朋友;先用一张图总结本文iOS中的回调(callback)「回调(callback)」的定义:“Acallbackletsyouwriteapieceofcodeandthenassociatethatcodewithaparticularevent.Whentheeventhappens,yourcodeisexecuted.” ——摘自《Object-CProgramming:TheBigNerdRanchGuide2nd》P613解读如下:callback(回调)就是一段「代码」,我们会通过某种途径,将这段「代码」和一个特定的事件(event)联系起来,当特定事件(event)发生后,这段「代码」被执行。很好,简单粗暴。为什么要有「回调(callback)」?「上帝说要有callback,于是就有了callback。」——佚名 在这里,斗胆将程序分为两

  • 地震信号的一些基本概念

    本文首发于算法社区dspstack.com,转载请注明出处,谢谢。前言最近看了一些关于地震信号相关的一些文献,现就此把这些知识写出来,就当再强化下可控震源和扫描信号可控震源是指通过一个与大地紧密耦合的振动平板,以反作用方式向地下传送一组连续振动的弹性波信号(又称扫描信号),再经过对地面接收到的反射波信号的处理和辨识,用于解释地下地质目标的构造形态与产状。这种扫描信号是一种连续的、频率变化的信号。不是所有的连续信号都可以用于地震勘探,除伪随机信号外,可控震源的扫描信号必须满足如下基本要求:具有相应的起始与终了频率;具有相应的起始与终了镶边函数(斜坡);具有一定的扫描时问;扫描信号可以是严格单调升频或降频(线性),也可以是非线性。 扫描信号根据其特征分为:线性扫描信号、非线性扫描信号和伪随机扫描信号。其中线性扫描信号是地震勘探中最常用的一种扫描信号。理论上,线性扫描信号可用频率连续的正弦信号表示,其公式表示为: 其中 :信号振幅,:频带宽度,:起始频率,:终止频率,:记录时间,:扫描的时间长度相关子波所谓相关子波其实是输入信号x(t)和输出信号y(t)的互相关序列,只是在地震信号中输入信

  • 记2012-2013年一路的Windows Phone历程

    昨天和秦春林同学小聚一次,不厌其烦的唠叨各种认识了许多年的纪念,感觉他仍然保持着那份对技术的追求和梦想,而我却已经变得逐利,每个人享受幸福的方式不一样,因此追逐幸福的过程也就是没有办法一样了,你无法知道某一个人在某一个时刻是否幸福,能在一直做快乐的事,就是一件很幸福的事情。 看了一下博客自2012年中的时候还在写一个系列关于Cocos2dx-xna的游戏开发,后来就突然停了,原因呢,也很简单,事情太多太忙了,那年的3月份,我加入了OpenXLive,开始了专注于WP应用和游戏开发的征程,那时候OpenXLive只有开发者后台,没有第一方的游戏,大量的第三方游戏产品质量不高,对于这样的平台,最需要的是旗帜性质的产品,当时人也比较少,大量的人都在做平台服务那块,做游戏专职的也就我一个人,当时WP7不支持C++,Silverlight倒是精通,但是做好游戏并不容易,后来又接触了XNA,用上Cocos2d-xna,我们数数这些游戏: 狼来啦是2012年5月上线,中文英文免费榜首了大约将近2个月,当时几乎所有新WP机器都会安装这个,在那个时期,这游戏在WP上都算A级的产品了,Silverligh

  • Python 2nd Day

    DataType List Compounddatatype,usedtogrouptogetherothervalues, whichcanbewrittenasalistofcomma-separatedvalues(items)betweensquarebrackets. Allsliceoperationsreturnanewlistcontainingtherequestedelements.Thismeansthatthefollowingslicereturnsanew(shallow)copyofthelist: >>>squares[:] [1,4,9,16,25]复制 listsareamutabletype. loopingalist: >>>fori,vinenumerate(['tic','tac','toe']): ...print(i,v) ... 0tic 1tac 2toe复制 loopingovertwoormoresequencesatthesametime: >>&

  • ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

      近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript3.0,现把学习结果分享一下,希望对新手有帮助。 目录   ActionScript3.0简介   HelloWorld   文件读写   数据存储(SharedObject)   与JS互调 ActionScript3.0简介   ActionScript3.0是一种强大的面向对象编程语言,ActionScript3符合ECMAScriptLanguageSpecification第三版。它还包含基于ECMAScriptEdition4的功能,比如类、包和名称空间;可选的静态类型;生成器和迭代器;以及非结构化赋值(destructuringassignments)。随着Web应用程序项目需求的增长,也要求ActionScript引擎有重大的突破。ActionScript3引入了一个新的高度优化的ActionScriptVirtualMachine(AVM2),与AVM1相比,AVM2的性能有了显著的提高。这使ActionScript3代码的执行速度几乎比以前的ActionScript代码快

  • 进程

    进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。一.多道技术内存中同时存入多道(多个)程序,cpu从一个进程快速切换到另外一个,使每个进程各自运行几十或几百毫秒,这样,虽然在某一个瞬间,一个cpu只能执行一个任务,但在1秒内,cpu却可以运行多个进程,这就给人产生了并行的错觉,即伪并行,以此来区分多处理器操作系统的真正硬件并行(多个cpu共享同一个物理内存)1.背景:针对单核,实现并发2.空间复用:如内存中同时有多道程序3.时间复用:复用一个cpu的时间片遇到io切,占用cpu时间过长也切,核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行二.进程进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。进程的特征:动态性:进程是动态产生,动态消亡的。并发性:任何进程都可以同其他进程一起并发执行独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进进程与程序的区别:程序是指令和数据的有序集合,其本身没有任何运行的含义

  • dedecms调用日期格式化形式大全

    记的以前刚学习dedecms的时候,对于调用文章的日期也让我头痛了许久,今天编辑专门收集整理了一篇关于dedecms日期格式化的文章,希望对大家有所帮助 dedecms特有常用的日期格式化函数MyDate() 代码:[field:pubdatefunction="MyDate('Y-m-d',@me)"/] 样式:2013-08-07 代码:[field:pubdatefunction="MyDate('m-d',@me)"/] 样式:08-07 代码:[field:pubdatefunction="MyDate('Y-m-dH:i:s',@me)"/] 样式:2013-08-0709:14:38 以上三种日期格式是我们制作网站时经常使用到的,如果你想更个性化的设置日期可以继续往下看 dedecms使用php自带日期格式化函数strftime()     代码:[field:pubdaterunphp='yes']@me=str_replace('-','',strftime("%Y年-%m月-%d日%H:%M:%S",

  • IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)

      首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于devicetree,还是基于传统的Platform模型,有些文章只是把代码移植到平台上调试测试下,并没有理清内部逻辑调用关系,所以觉得有必要把两种驱动模型阐述剖析清楚,本文阅读者必须以在单片机上调试过IIC总线为前提,能够分析从芯片datasheet和其工作原理和总线的基本操作,虽然I2C硬件体系结构比较简单,但是I2C体系结构在Linux中的实现却相当复杂,作为驱动工程师,编写具体的I2C驱动时,主要工作如下: 1)、提供I2C适配器的硬件驱动,探测,初始化I2C适配器(如申请I2C的I/O地址和中断号),驱动CPU控制的I2C适配器从硬件上产生各种信号以及处理I2C中断(I2C总线驱动); 2)、提供I2C控制的algorithm,用具体适配器的xxx_xfer()函数填充i2c_algorithm的master_xfer指针,并把i2c_algorithm指针赋给i2c_adapter的algo指针(I2C总线驱动),用于产生

  • Python排序算法(二)——冒泡排序

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python  https://www.cnblogs.com/xxtalhr/p/10786904.html  一、冒泡排序(BubbleSort)   冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,一层一层的将较大的元素往后移动,其现象和气泡在上升过程中慢慢变大类似,故成为冒泡排序。 1、原理 从第一个和第二个开始比较,如果第一个比第二个大,则交换位置,然后比较第二个和第三个,逐渐往后 经过第一轮后最大的元素已经排在最后,所以重复上述操作的话第二大的则会排在倒数第二的位置。 那重复上述操作n-1次即可完成排序,因为最后一次只有一个元素所以不需要比较  2、举例   举个例子,假设我现在有一个数列需要使用冒泡来排序[11,99,33,69,77,88,55,11,33,36,39,66,44,22],我们来看看使用冒泡的详细步骤:   首先11和99比较大小,99大

  • php接口post提交方法 (改良版)

      $postData="reqType=2&caller=15088719619&called=15068722845"; $result=send_post("192.168.0.152","4569","http://192.168.0.152:4569",$postData); var_dump($result); functionsend_post($host,$port,$urlPage,$postData){ //echostr_pad("",256); $errno=''; $errstr=''; $length=strlen($postData); $fp=fsockopen($host,$port,$errno,$errstr,120)orexit($errstr."--->".$errno); //构造post请求的头 $header="POST$urlPageHTTP/1.1\r\n"; $header.="Host:".$host."\r\n"; $header.="Referer:".$urlPage."\r\n"

  • 眼压高

    眼压是如何变高的:眼睛内有一定压力,因为眼球内有眼内容物,眼球中有一个部位称为睫状突,能够产生房水,房水经过房水循环,从后房进入前房,从前房进入前房角,从前房角的引流渠道排出。眼睛房水循环渠道当中,如果分泌的房水过多或排出的过程不畅(房水循环障碍),都会导致眼压升高,常见原因如下:  (1)睫状突受到炎症的刺激引起房水分泌的亢进,而房水排出还是正常状态,此时房水分泌相对过多,眼压就会升高;  (2)炎症导致前房角粘连,房水不能通过前房角外流或前房角被出血阻挡,前房出血影响房水排出;  (3)虹膜形成虹膜后粘连,粘连在晶状体上阻隔房水从后房进入前房,引起眼压升高。 眼压高危害:眼压升高后,在高眼压的作用下视神经就会萎缩,导致视力严重受损。高眼压是青光眼发病的一种危险因素。眼压高就会造成青光眼,只有手术治疗青光眼才可以治愈。所以发现眼压高,要及时查找高眼压的原因,针对病因治疗,保护眼睛不至于失明。 引起眼压升高的原因:  (1)疾病:青光眼、白内障、虹膜炎、糖尿病、脑血管疾病、外伤等,都能使眼压升高。  (2)疲劳:用眼过度、疲劳充血等,也可能导致眼压高。  (3)炎症:炎症造成的。指导意

  • bzoj4555(多项式求逆解法)

    //和以前写的fft不太一样,可能是因为要取模?? #include<iostream> #include<cstring> #include<cmath> #include<cstdio> #include<algorithm> usingnamespacestd; typedeflonglongll; constintmod=998244353,maxn=270005; intmx,n,m,inv[maxn],a[maxn],b[maxn],c[maxn],na[maxn],w[2][maxn],pos[maxn]; intqmi(intx,inty){ intt=1; for(;y;y>>=1,x=(ll)x*x%mod)if(y&1)t=(ll)t*x%mod; returnt; } voidpre(intn){ inti,x=qmi(3,(mod-1)/n);//以前这里的取值都和mod无关啊,取了模了不一样了? w[0][0]=w[1][0]=1; for(inti=1;i<n;++i)w

  • php:关于微信一直无法通过php token验证, ehcho echo $echoStr; 总是提示不对的问题.

    用微信官方提供的demo验证token老是失败,但是我自己用IIS加.net,token就能登录成功,后来debug,找各种问题,总是不能解决. 最后还是再搜了搜.找到这么一篇解决方案.原文在这里: https://www.cnblogs.com/donlyn/p/5675483.html 解决方案: 最终在echo$_GET['echostr'];前添加了一句代码ob_clean(); 1<?php 2//设置token 3define("TOKEN","sohovan2"); 45//新建object 6$wechatObj=newwechatCallbackapiTest(); 7//没有得到echostr回声,先验证 8//如果不是get操作.get有没有这个echostr. 9if(!isset($_GET['echostr'])){ 10 11}else{ 12//如果是get操作,并且是非空. 13//验证消息; 14$wechatObj->valid(); 15} 16 17classwechatCallbackapiTest 18{ 19//验证消息 2

  • Modbus 仿真测试工具 Mod_Rssim 详细图文教程

           Mod_RSsim是一款轻量级的Modbus从机模拟器,它可以模拟ModBusTCP和ModBusRTU的从机,能够同时模拟254个被控站,软件使用简单方便,可以满足一般的主机调试。 官方网站:www.adroit.co.z 下载地址       1、主程序窗口 打开程序之后,仿真即直接开始,此时可以有主机连接仿真器。软件主界面如下,非常轻量级,大部分功能都可以直接在界面上操作       2、基本设置 首先选择协议类型,在Prot下拉窗口可以选择协议类型       点击串口标志,可以设置端口号和站号               左下角绿色数字标志代表站号       3、地址模式 地址支持Hex模式和Dec模式,可以通过Address类型选择,如下,由于通常我们使用4001,40001等地址来表述数据地址,因此一般可以选择

  • nginx模块添加

    nginx模块添加 下载需要添加的模块 gitclone https://github.com/cuber/ngx_http_google_filter_module [root@web-nginx~]#nginx-V nginxversion:nginx/1.20.1 builtbygcc4.8.520150623(RedHat4.8.5-44)(GCC) builtwithOpenSSL1.0.2k-fips26Jan2017 TLSSNIsupportenabled configurearguments:--user=nginx--group=nginx--prefix=/usr/local/nginx--conf-path=/etc/nginx/nginx.conf--sbin-path=/usr/sbin/nginx--error-log-path=/var/log/nginx/nginx_error.log--http-log-path=/var/log/nginx/nginx_access.log--pid-path=/usr/local/nginx/run/nginx

相关推荐

推荐阅读