Skip to content

Commit

Permalink
deploy: 20f0059
Browse files Browse the repository at this point in the history
  • Loading branch information
Euler-37 committed Mar 25, 2024
1 parent 038138e commit 60eed9d
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 20 deletions.
18 changes: 9 additions & 9 deletions ch03-01-precision.html
Original file line number Diff line number Diff line change
Expand Up @@ -154,29 +154,29 @@ <h1 class="menu-title">现代Fortran程序设计</h1>
<h1 id="变量的表示范围与浮点数精度提高篇"><a class="header" href="#变量的表示范围与浮点数精度提高篇">变量的表示范围与浮点数精度(提高篇)</a></h1>
<p>本节主要介绍Fortran中的变量的范围,简单介绍IEEE754和浮点数的误差</p>
<h2 id="整数"><a class="header" href="#整数">整数</a></h2>
<p>计算机使用二进制来表示数据,一个默认的整数类型占4个字节,一共有32位,每个位有两种状态,所以一共可以表示的数据量为$2^{32}$</p>
<p>因为我们需要同时表示负数、正数和零,所以,整数的表示范围被设计为$[-2^{31},2^{31}-1]$ 一共有$2^{32}$个数。</p>
<p>计算机使用二进制来表示数据,一个默认的整数类型占4个字节,一共有32位,每个位有两种状态,所以一共可以表示的数据量为\(2^{32}\)</p>
<p>因为我们需要同时表示负数、正数和零,所以,整数的表示范围被设计为\([-2^{31},2^{31}-1]\)一共有\(2^{32}\)个数。</p>
<p>如果需要表示的数据超过了这个限度,那么就需要kind值更大的整数类型<code>integer(8)</code>来表示</p>
<h2 id="浮点数"><a class="header" href="#浮点数">浮点数</a></h2>
<p>整数是完全精确的,但是在实际的生活工作中,我们不一定需要这么精确的数,$\pi=3.14$或者是$\pi=3.141592653$对某些计算来说并不重要。但是相对的,数值可以表达的范围对某些行业更为有用,比如天体之间的距离。所以我们可以舍弃一部分的精确度来换取更大的表示范围,这就是浮点数。</p>
<p>整数是完全精确的,但是在实际的生活工作中,我们不一定需要这么精确的数,\(\pi=3.14\)或者是\(\pi=3.141592653\)对某些计算来说并不重要。但是相对的,数值可以表达的范围对某些行业更为有用,比如天体之间的距离。所以我们可以舍弃一部分的精确度来换取更大的表示范围,这就是浮点数。</p>
<h3 id="ieee754"><a class="header" href="#ieee754">IEEE754</a></h3>
<p>按照IEEE754 浮点数的标准,浮点数由三部分组成:符号位(sign),指针偏移值(exponent)和分数值(fraction)。 一个浮点数是这三部分的乘积$Value=sign<em>exponent</em>fraction$</p>
<p>浮点数的默认类型也是占4个字节,32个位,所以能表示的状态最多也是$2^{32}$个,因此,<strong>注定有些数字没有办法精确表示</strong>,IEEE754的处理方法是:</p>
<p>浮点数的默认类型也是占4个字节,32个位,所以能表示的状态最多也是\(2^{32}\)个,因此,<strong>注定有些数字没有办法精确表示</strong>,IEEE754的处理方法是:</p>
<p>$$(sign)1+(exponent)8+(fraction)23=32$$</p>
<ul>
<li>
<p>用23个位表示一组分数,$fraction=1+\sum_{i=1}^{23}\frac{a[i]}{2^i}$,其中$a[i]$表示这个位是0还是1。</p>
<p>用23个位表示一组分数,\(fraction=1+\sum_{i=1}^{23}\frac{a[i]}{2^i}\),其中a[i]表示这个位是0还是1。</p>
</li>
<li>
<p>用8个位表示指数,$exponent=2^{M-127}$,M的取值范围是[0,255]</p>
<p>用8个位表示指数,\(exponent=2^{M-127}\),M的取值范围是[0,255]</p>
</li>
</ul>
<p>浮点数就是利用exponent把给定的fraction按照比例放大或者缩小。即能用这个公式表示出来的都是精确的数,其余的数都是近似等于这些数中的一个。</p>
<p>所以,浮点数的精度是由fraction来决定的,在十进制表示下,精度为$log_{10}2^{23}=6.923$,所以通常说单精度浮点数的有效数字是6.9</p>
<p>所以,浮点数的精度是由fraction来决定的,在十进制表示下,精度为\(log_{10}2^{23}=6.923\),所以通常说单精度浮点数的有效数字是6.9</p>
<h3 id="infinity"><a class="header" href="#infinity">Infinity</a></h3>
<p>当符号位$M$取最大值255,且分数位全为0时,此时规定这个值为$Infinity$</p>
<p>当符号位$M$取最大值255,且分数位全为0时,此时规定这个值为<code>Infinity</code></p>
<h3 id="nan"><a class="header" href="#nan">Nan</a></h3>
<p>当符号位$M$取最大值255,且分数位不全为0时,此时规定这些值均为$Nan$</p>
<p>当符号位$M$取最大值255,且分数位不全为0时,此时规定这些值均为<code>Nan</code></p>
<h2 id="思考题"><a class="header" href="#思考题">思考题</a></h2>
<ul>
<li>按照浮点数公式,推算在浮点数表示下可以精确表示的最大整数是多少</li>
Expand Down
18 changes: 9 additions & 9 deletions print.html
Original file line number Diff line number Diff line change
Expand Up @@ -459,29 +459,29 @@ <h2 id="思考题"><a class="header" href="#思考题">思考题</a></h2>
<div style="break-before: page; page-break-before: always;"></div><h1 id="变量的表示范围与浮点数精度提高篇"><a class="header" href="#变量的表示范围与浮点数精度提高篇">变量的表示范围与浮点数精度(提高篇)</a></h1>
<p>本节主要介绍Fortran中的变量的范围,简单介绍IEEE754和浮点数的误差</p>
<h2 id="整数"><a class="header" href="#整数">整数</a></h2>
<p>计算机使用二进制来表示数据,一个默认的整数类型占4个字节,一共有32位,每个位有两种状态,所以一共可以表示的数据量为$2^{32}$</p>
<p>因为我们需要同时表示负数、正数和零,所以,整数的表示范围被设计为$[-2^{31},2^{31}-1]$ 一共有$2^{32}$个数。</p>
<p>计算机使用二进制来表示数据,一个默认的整数类型占4个字节,一共有32位,每个位有两种状态,所以一共可以表示的数据量为\(2^{32}\)</p>
<p>因为我们需要同时表示负数、正数和零,所以,整数的表示范围被设计为\([-2^{31},2^{31}-1]\)一共有\(2^{32}\)个数。</p>
<p>如果需要表示的数据超过了这个限度,那么就需要kind值更大的整数类型<code>integer(8)</code>来表示</p>
<h2 id="浮点数"><a class="header" href="#浮点数">浮点数</a></h2>
<p>整数是完全精确的,但是在实际的生活工作中,我们不一定需要这么精确的数,$\pi=3.14$或者是$\pi=3.141592653$对某些计算来说并不重要。但是相对的,数值可以表达的范围对某些行业更为有用,比如天体之间的距离。所以我们可以舍弃一部分的精确度来换取更大的表示范围,这就是浮点数。</p>
<p>整数是完全精确的,但是在实际的生活工作中,我们不一定需要这么精确的数,\(\pi=3.14\)或者是\(\pi=3.141592653\)对某些计算来说并不重要。但是相对的,数值可以表达的范围对某些行业更为有用,比如天体之间的距离。所以我们可以舍弃一部分的精确度来换取更大的表示范围,这就是浮点数。</p>
<h3 id="ieee754"><a class="header" href="#ieee754">IEEE754</a></h3>
<p>按照IEEE754 浮点数的标准,浮点数由三部分组成:符号位(sign),指针偏移值(exponent)和分数值(fraction)。 一个浮点数是这三部分的乘积$Value=sign<em>exponent</em>fraction$</p>
<p>浮点数的默认类型也是占4个字节,32个位,所以能表示的状态最多也是$2^{32}$个,因此,<strong>注定有些数字没有办法精确表示</strong>,IEEE754的处理方法是:</p>
<p>浮点数的默认类型也是占4个字节,32个位,所以能表示的状态最多也是\(2^{32}\)个,因此,<strong>注定有些数字没有办法精确表示</strong>,IEEE754的处理方法是:</p>
<p>$$(sign)1+(exponent)8+(fraction)23=32$$</p>
<ul>
<li>
<p>用23个位表示一组分数,$fraction=1+\sum_{i=1}^{23}\frac{a[i]}{2^i}$,其中$a[i]$表示这个位是0还是1。</p>
<p>用23个位表示一组分数,\(fraction=1+\sum_{i=1}^{23}\frac{a[i]}{2^i}\),其中a[i]表示这个位是0还是1。</p>
</li>
<li>
<p>用8个位表示指数,$exponent=2^{M-127}$,M的取值范围是[0,255]</p>
<p>用8个位表示指数,\(exponent=2^{M-127}\),M的取值范围是[0,255]</p>
</li>
</ul>
<p>浮点数就是利用exponent把给定的fraction按照比例放大或者缩小。即能用这个公式表示出来的都是精确的数,其余的数都是近似等于这些数中的一个。</p>
<p>所以,浮点数的精度是由fraction来决定的,在十进制表示下,精度为$log_{10}2^{23}=6.923$,所以通常说单精度浮点数的有效数字是6.9</p>
<p>所以,浮点数的精度是由fraction来决定的,在十进制表示下,精度为\(log_{10}2^{23}=6.923\),所以通常说单精度浮点数的有效数字是6.9</p>
<h3 id="infinity"><a class="header" href="#infinity">Infinity</a></h3>
<p>当符号位$M$取最大值255,且分数位全为0时,此时规定这个值为$Infinity$</p>
<p>当符号位$M$取最大值255,且分数位全为0时,此时规定这个值为<code>Infinity</code></p>
<h3 id="nan"><a class="header" href="#nan">Nan</a></h3>
<p>当符号位$M$取最大值255,且分数位不全为0时,此时规定这些值均为$Nan$</p>
<p>当符号位$M$取最大值255,且分数位不全为0时,此时规定这些值均为<code>Nan</code></p>
<h2 id="思考题-1"><a class="header" href="#思考题-1">思考题</a></h2>
<ul>
<li>按照浮点数公式,推算在浮点数表示下可以精确表示的最大整数是多少</li>
Expand Down
2 changes: 1 addition & 1 deletion searchindex.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion searchindex.json

Large diffs are not rendered by default.

0 comments on commit 60eed9d

Please sign in to comment.