查看“︁雙精度浮點數”︁的源代码
←
雙精度浮點數
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{expand|time=2007-09-26T20:17:13Z}} {{noteTA |G1=IT }} {{Floating-point}} '''雙精度浮點數'''({{Lang-en|Double-precision floating-point}})是计算机使用的一種[[資料型別]]。比起[[單精度浮點數]]僅有 32 位元(4字节),雙精度浮點數使用 64 位元(8字节) 來儲存一個浮點數<ref>{{cite book|author=Stanley B. Lippman, Josée Lajoie, Barbara E. Moo|title=《C++ Primer. fifth edition 中文版》|year=2020|publisher=碁峰資訊|isbn=978-986-502-172-6|pages=第33頁}}</ref>。 它可以表示二進位制的53-{位}-[[有效數字]],其可以表示的数字的绝对值范围为<math>[ 2^{-1024} , 2^{1024} ]</math>。 == 格式 == * -{sign bit}-(符號):用來表示正負號 * -{exponent}-(指數):用來表示次方數 * -{mantissa}-(尾數):用來表示精確度 [[File:IEEE_754_Double_Floating_Point_Format.svg]] ===符号=== 0代表數值為正,1代表數值為負。 ===指數=== 共有11個位元 , 使用「{{le|指數偏移|Exponent bias|偏移表示法}}」, 有2個例外分別為 #「11個位元皆為0」 #「11個位元皆為1」 並且以1023為偏移標準,表示實際指數為0,因此指數範圍為 -1022 到 +1023: 指數 <code>000<sub>16</sub></code> 和 <code>7ff<sub>16</sub></code> 具有特殊意義: <code>00000000000<sub>2</sub></code> = <code>000<sub>16</sub></code>當尾數為0時為[[-0|±0]],尾數不為0時為[[IEEE 754#非规约形式的浮点数 |非正規形式的浮點數]]。 <code>11111111111<sub>2</sub></code> = <code>7ff<sub>16</sub></code>當尾數為0時為∞,尾數不為0時為[[NaN]]。 ===尾數=== 在[[二進位]]的「[[科學記號]]」,數字被表示為: <math>\text{1.mantissa} \times \text{2}^\text{exponent}</math> 二進位的「科學記號」(a×2<sup>n</sup>)的a的範圍是大於等於1而小於2,例如: * 二進位制的 <math>\text{11.101} \times \text{2}^\text{1001}</math> 可以規格化為 <math>\text{1.1101} \times \text{2}^\text{1010}</math>,儲存時尾数只需要儲存1101即可。 * 二進位制的 <math>\text{0.00110011} \times \text{2}^{-1001}</math> 可以規格化為 <math>\text{1.10011} \times \text{2}^{-1100}</math>,儲存時尾數只需要儲存10011即可。 ===小結=== 根據以上的敘述,一個雙精度浮點數所代表的數值為: <math>(-1)^{\text{sign}} \times 2^{\text{exponent}} \times 1.\text{mantissa}</math> == 例子 == {| style="background-color: #f8f9fa; margin: 1em 0; border: 1px solid #eaecf0;" |- | <code>0 01111111111 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 3FF0 0000 0000 0000<sub>16</sub> ≙ +2<sup>0</sup> × 1 = 1 |- | <code>0 01111111111 0000000000000000000000000000000000000000000000000001<sub>2</sub></code> ≙ 3FF0 0000 0000 0001<sub>16</sub> ≙ +2<sup>0</sup> × (1 + 2<sup>−52</sup>) ≈ 1.0000000000000002, the smallest number > 1 |- | <code>0 01111111111 0000000000000000000000000000000000000000000000000010<sub>2</sub></code> ≙ 3FF0 0000 0000 0002<sub>16</sub> ≙ +2<sup>0</sup> × (1 + 2<sup>−51</sup>) ≈ 1.0000000000000004 |- | <code>0 10000000000 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 4000 0000 0000 0000<sub>16</sub> ≙ +2<sup>1</sup> × 1 = 2 |- | <code>1 10000000000 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ C000 0000 0000 0000<sub>16</sub> ≙ −2<sup>1</sup> × 1 = −2 |} {| style="background-color: #f8f9fa; margin: 1em 0; border: 1px solid #eaecf0;" |- | <code>0 10000000000 1000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 4008 0000 0000 0000<sub>16</sub> ≙ +2<sup>1</sup> × 1.1<sub>2</sub> = 11<sub>2</sub> = 3 |- | <code>0 10000000001 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 4010 0000 0000 0000<sub>16</sub> ≙ +2<sup>2</sup> × 1 = 100<sub>2</sub> = 4 |- | <code>0 10000000001 0100000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 4014 0000 0000 0000<sub>16</sub> ≙ +2<sup>2</sup> × 1.01<sub>2</sub> = 101<sub>2</sub> = 5 |- | <code>0 10000000001 1000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 4018 0000 0000 0000<sub>16</sub> ≙ +2<sup>2</sup> × 1.1<sub>2</sub> = 110<sub>2</sub> = 6 |- | <code>0 10000000011 0111000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 4037 0000 0000 0000<sub>16</sub> ≙ +2<sup>4</sup> × 1.0111<sub>2</sub> = 10111<sub>2</sub> = 23 |- | <code>0 01111111000 1000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 3F88 0000 0000 0000<sub>16</sub> ≙ +2<sup>−7</sup> × 1.1<sub>2</sub> = 0.00000011<sub>2</sub> = 0.01171875 (3/256) |} {| style="background-color: #f8f9fa; margin: 1em 0; border: 1px solid #eaecf0;" |- style="vertical-align: top;" | <code>0 00000000000 0000000000000000000000000000000000000000000000000001<sub>2</sub></code> ≙ 0000 0000 0000 0001<sub>16</sub> ≙ +2<sup>−1022</sup> × 2<sup>−52</sup> = 2<sup>−1074</sup> <br/> ≈ 4.9406564584124654 × 10<sup>−324</sup> (Min. subnormal positive double) |- style="vertical-align: top;" | <code>0 00000000000 1111111111111111111111111111111111111111111111111111<sub>2</sub></code> ≙ 000F FFFF FFFF FFFF<sub>16</sub> ≙ +2<sup>−1022</sup> × (1 − 2<sup>−52</sup>) <br/> ≈ 2.2250738585072009 × 10<sup>−308</sup> (Max. subnormal double) |- style="vertical-align: top;" | <code>0 00000000001 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 0010 0000 0000 0000<sub>16</sub> ≙ +2<sup>−1022</sup> × 1 <br/> ≈ 2.2250738585072014 × 10<sup>−308</sup> (Min. normal positive double) |- style="vertical-align: top;" | <code>0 11111111110 1111111111111111111111111111111111111111111111111111<sub>2</sub></code> ≙ 7FEF FFFF FFFF FFFF<sub>16</sub> ≙ +2<sup>1023</sup> × (1 + (1 − 2<sup>−52</sup>)) <br/> ≈ 1.7976931348623157 × 10<sup>308</sup> (Max. Double) |} {| style="background-color: #f8f9fa; margin: 1em 0; border: 1px solid #eaecf0;" |- | <code>0 00000000000 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 0000 0000 0000 0000<sub>16</sub> ≙ +0 |- | <code>1 00000000000 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 8000 0000 0000 0000<sub>16</sub> ≙ −0 |- | <code>0 11111111111 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ 7FF0 0000 0000 0000<sub>16</sub> ≙ +∞ (positive infinity) |- | <code>1 11111111111 0000000000000000000000000000000000000000000000000000<sub>2</sub></code> ≙ FFF0 0000 0000 0000<sub>16</sub> ≙ −∞ (negative infinity) |- | <code>0 11111111111 0000000000000000000000000000000000000000000000000001<sub>2</sub></code> ≙ 7FF0 0000 0000 0001<sub>16</sub> ≙ NaN (sNaN on most processors, such as x86 and ARM) |- | <code>0 11111111111 1000000000000000000000000000000000000000000000000001<sub>2</sub></code> ≙ 7FF8 0000 0000 0001<sub>16</sub> ≙ NaN (qNaN on most processors, such as x86 and ARM) |- | <code>0 11111111111 1111111111111111111111111111111111111111111111111111<sub>2</sub></code> ≙ 7FFF FFFF FFFF FFFF<sub>16</sub> ≙ NaN (an alternative encoding of NaN) |} {| style="background-color: #f8f9fa; margin: 1em 0; border: 1px solid #eaecf0;" |- | <code>0 01111111101 0101010101010101010101010101010101010101010101010101<sub>2</sub></code> <br/> = <code>3fd5 5555 5555 5555<sub>16</sub></code> ≙ +2<sup>−2</sup> × (1 + 2<sup>−2</sup> + 2<sup>−4</sup> + ... + 2<sup>−52</sup>) <br/> ≈ <sup>1</sup>/<sub>3</sub> |} {| style="background-color: #f8f9fa; margin: 1em 0; border: 1px solid #eaecf0;" |- | <code>0 10000000000 1001001000011111101101010100010001000010110100011000<sub>2</sub></code> <br/> = <code>4009 21fb 5444 2d18<sub>16</sub></code> ≈ pi |} == 参考文献 == {{Reflist}} == 參閱 == * [[IEEE 754|IEEE二进制浮点数算术标准(IEEE 754)]] * [[浮点数]] {{数据类型}} [[Category:数据类型]] [[Category:二进制算术]] [[Category:計算機算術]]
该页面使用的模板:
Template:Cite book
(
查看源代码
)
Template:Expand
(
查看源代码
)
Template:Floating-point
(
查看源代码
)
Template:Lang-en
(
查看源代码
)
Template:Le
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:数据类型
(
查看源代码
)
返回
雙精度浮點數
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息