网站开发技术支持与保障,2022中国进入一级战备了吗,做芯片哪个网站推广,网站做子页跳转到首页文章目录 二进制IEEE浮点数 本篇文章的前置知识#xff1a;数学分析 二进制
命题#xff1a;二进制转化为十进制 二进制的数字表示为 ⋯ b 2 b 1 b 0 . b − 1 b − 2 ⋯ \cdots b_2b_1b_0.b_{-1}b_{-2}\cdots ⋯b2b1b0.b−1b−2⋯这等价于十进制下的 ⋯ b 2 2 … 文章目录 二进制IEEE浮点数 本篇文章的前置知识数学分析 二进制
命题二进制转化为十进制 二进制的数字表示为 ⋯ b 2 b 1 b 0 . b − 1 b − 2 ⋯ \cdots b_2b_1b_0.b_{-1}b_{-2}\cdots ⋯b2b1b0.b−1b−2⋯这等价于十进制下的 ⋯ b 2 × 2 2 b 1 × 2 1 b 0 × 2 0 b − 1 × 2 − 1 b − 2 × 2 − 2 ⋯ \cdots b_2\times 2^{2}b_1\times 2^{1}b_0\times 2^0b_{-1}\times 2^{-1}b_{-2}\times 2^{-2}\cdots ⋯b2×22b1×21b0×20b−1×2−1b−2×2−2⋯
命题十进制转化为二进制 整数部分十进制整数不断除2记录除数及余数直至除数为0从后往前依次写下余数即为二进制下的数字如下例 ( 53 ) 10 (53)_{10} (53)10 53 ÷ 2 26 余 1 26 ÷ 2 13 余 0 13 ÷ 2 6 余 1 6 ÷ 2 3 余 0 3 ÷ 2 1 余 1 1 ÷ 2 0 余 1 53\div 2 26 \text{余} 1\\ 26\div 213 \text{余} 0\\ 13\div 26 \text{余} 1\\ 6\div 23 \text{余} 0\\ 3\div 21 \text{余} 1\\ 1\div 20 \text{余} 1 53÷226余126÷213余013÷26余16÷23余03÷21余11÷20余1则得 ( 53 ) 10 ( 110101. ) 2 (53)_{10}(110101.)_2 (53)10(110101.)2
小数部分十进制小数不断乘2记录整数部分从前往后依次写下整数部分如下例 ( 0.7 ) 10 (0.7)_{10} (0.7)10 0.7 × 2 0.4 1 0.4 × 2 0.8 0 0.8 × 2 0.6 1 0.6 × 2 0.2 1 0.2 × 2 0.4 0 ⋯ 0.7\times 20.41\\ 0.4\times 20.80\\ 0.8\times 20.61\\ 0.6\times 20.21\\ 0.2\times 20.4 0\\ \cdots 0.7×20.410.4×20.800.8×20.610.6×20.210.2×20.40⋯发现计算过程开始循环故 ( 0.7 ) 10 ( 0.1 0110 ‾ ) 2 (0.7)_{10}(0.1\overline{0110})_2 (0.7)10(0.10110)2
IEEE浮点数
定义IEEE浮点数 标准的IEEE浮点数为 ± 1. a b c d e f g … z × 2 p \pm 1.abcdefg\dots z \times 2^p ±1.abcdefg…z×2p其中 a b c d e f g … z abcdefg\dots z abcdefg…z 取值只有 0 或 1 该浮点数在计算机中的储存方式为 1 a b c d e f g … z p 1\hspace{1ex} abcdefg\dots z\hspace{1ex}p 1abcdefg…zp 其中
首位表示正负号0代表正数1代表负数后面部分称为尾数是有效数字中间部分称为指数指明小数点的位置
例如9的2进制表示为1001浮点数表示为0 11 001第一个数 0 表示该数为正数尾数001表示这个数的有效数字为 ( 1.001 ) 2 (1.001)_2 (1.001)2默认首位为1第二个数 ( 11 ) 2 3 (11)_23 (11)23表示这个数的指数为3即把小数点向右移动3位
定义一般的浮点数系统描述性定义 考虑 R \mathbb{R} R 的某离散子集 F \mathrm{F} F F \mathrm{F} F的元素形如 0 或 x ± m β t β e x\pm \dfrac{m}{\beta^t}\beta^e x±βtmβe其中 β \beta β 为不小于2的整数称为基数即 β \beta β 进制 t t t 为不大于1的整数称为精度即该系统能表示的最大位数尾数 m ∈ [ 1 , β t ] m\in[1,\beta^t] m∈[1,βt]是整数e为任意整数即指数若限制 m m m 的范围为 [ β t − 1 , β t − 1 ] [\beta^{t-1},\beta^t-1] [βt−1,βt−1]则可使 m m m 唯一此时 ± ( m β t ) \pm(\dfrac{m}{\beta^t}) ±(βtm) 称为 x x x 的尾数
注对于那些位数超过精度的数字必须进行截断并舍入零舍一入才能保存在计算机中故浮点数集 F F F 在实数 R \mathbb{R} R 中是离散的
定义机器 ϵ \epsilon ϵ ε m a c h i n e 1 2 β 1 − t \varepsilon_{machine}\dfrac{1}{2}\beta^{1-t} εmachine21β1−t表示两个相邻的浮点数之间的距离的一半
注有的书上也定义为两个相邻的浮点数之间的距离
定义单精度、双精度浮点数
单精度浮点数1位符号8位指数23位尾数 ε m a c h i n e 2 − 24 \varepsilon_{machine}2^{-24} εmachine2−24
双精度浮点数1位符号11位指数52位尾数 ε m a c h i n e 2 − 53 \varepsilon_{machine}2^{-53} εmachine2−53
注 单精度浮点数也称 32 位浮点数 1 8 23 32 182332 182332 双精度浮点数也称 64 位浮点数 1 11 52 64 1115264 1115264
定义浮点数函数 令 f l : R → F fl:\mathbb{R}\to F fl:R→F 表示将实数映射为离它最近的浮点数的函数
命题用浮点数保存实数的舍入误差 ∀ x ∈ R , ∣ x − f l ( x ) ∣ ∣ x ∣ ≤ ε m a c h i n e \forall x\in\mathbb{R},\dfrac{|x-fl(x)|}{|x|}\leq \varepsilon_{machine} ∀x∈R,∣x∣∣x−fl(x)∣≤εmachine或等价地说 ∀ x ∈ R , ∃ ϵ , ∣ ϵ ∣ ≤ ε m a c h i n e , s . t . f l ( x ) x ( 1 ϵ ) \forall x\in\mathbb{R},\exists \epsilon,|\epsilon|\leq\varepsilon_{machine},s.t.fl(x)x(1\epsilon) ∀x∈R,∃ϵ,∣ϵ∣≤εmachine,s.t.fl(x)x(1ϵ)
浮点数运算的基本公理
任取 x , y ∈ F x,y\in F x,y∈F令 ∗ \ast ∗ 表示四则运算的任一个 ⊛ \circledast ⊛ 表示相应的浮点数的四则运算则 x ⊛ y f l ( x y ) x\circledast yfl(xy) x⊛yfl(xy)
等价地有如下的浮点数运算公理 ∀ x , y ∈ F , ∃ ϵ , ∣ ϵ ∣ ≤ ε m a c h i n e , s . t . x ⊛ y ( x ∗ y ) ( 1 ϵ ) \forall x,y\in F,\exists \epsilon,|\epsilon|\leq\varepsilon_{machine},s.t.x\circledast y(x\ast y)(1\epsilon) ∀x,y∈F,∃ϵ,∣ϵ∣≤εmachine,s.t.x⊛y(x∗y)(1ϵ)
注 ε m a c h i n e \varepsilon_{machine} εmachine定义的修正将 ε m a c h i n e \varepsilon_{machine} εmachine定义为满足上述公理的最小值这样定义不会对运算产生显著影响
一般来说我们使用的计算机是符合浮点数运算的基本公理的 参考书籍 《数值分析》Timothy Sauer 著裴玉茹马赓宇 译 《Numerical Linear Algebra》Lloyd N.Trefethen , David Bau 著