浮点数计算

浮点数表示格式:

N = (数符)尾数*基数^(阶符)指数

尾数是定点小数,指数为阶码,定点整数,阶符为指数位符号位,数符位尾数和所有浮点数符号位

浮点数运算过程:

先对阶,在计算尾数,最后格式化结果

  • 一、对阶
    在对使用了科学计数法的数值进行加法运算时,需要先对阶。

比如一个数 A 是 1023000000,我们将它表示为 1.023 x 10^9。

比如一个数 B 是105600000,我们将它表示为 1.056 x 10^8。

我们不能直接对 A 和 B 进行相加,因为它们的 阶级(专用名词为基数)不一样,A 是 9 次方,B 是 8 次方。

所以我们要进行对阶操作,而且是小阶向大阶对齐(为了避免计算后的结果格式化)。

  • 二、尾数计算
    在进行 A + B 的计算中,因为 B 的阶乘(8)要小于 A 的阶乘(9),所以临时将 B 的数值改为 0.1056 x 10^9。接着再对尾数进行相加,即 1.023 + 0.1056 = 1.179。最后再套上阶乘,结果就是 1.179 x 10 ^9,计算完毕。
  • 三、结果格式化

特点:

  1. 一般尾数用补码,阶码用移码,但在IEEE754标准下尾数也可以是源码
  2. 阶码的位数决定数的表示范围,位数越多范围越大
  3. 尾数的位数决定数的有效精度,位数越多精度越高
  4. 对阶时,小数向大数看齐,损失低位数。
  5. 对阶是通过较小数的尾数右移实现的
  6. 尾数规格化的绝对值范围为[0.5 ,1]
  7. n位移码可表示的最大值2ⁿ⁻¹-1,n位补码浮点数的最小值是-1,最大值是1-2⁻﹙ⁿ⁻¹﹚

注意:

很明显,一个数的浮点表示不是唯一的。当小数点的位置改变时,阶码也随着相应改变,因此可以用多个浮点形式表示同一个数。

浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。为了充分利用尾数来表示更多的有效数字,通常采用规格化浮点数。规格化就是将尾数的绝对值限定在区间[0.5,1]。当尾数用补码表示时,需要注意如下问题。

①若尾数M>0,则其规格化的尾数形式为M=0.1×××…×,其中,×可为0,也可为1,即将尾数限定在区间[0.5,1]。

②若尾数M<O,则其规格化的尾数形式为M=1.0X××…×,其中,×可为0,也可为1,即将尾数M的范围限定在区间[-1,-0.5]。

如果浮点数的阶码(包括1位阶符)用R位的移码表示,尾数(包括Ⅰ位数符)用M位的补码表示,则这种浮点数所能表示的数值范围如下。

最大的正数: +(1-2^(-M+1))× 2^(2^R~1-1),最小的负数:-1 ×2(2^(R-1)-1)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇