4、浮点数的运算
6、浮点数的计算?
请耐心看完:
浮点数运算
假定有两个浮点数 X=Mx * 2Ex , Y=My * 2Ey
(1)加减运算
实现X±Y运算,需要如下五步:
1.1 对阶操作,即比较两个浮点数的阶码值的大小.求△E=Ex-Ey。当其不等于零时,首先应使两个数取相同的阶码值。其实现 *** 是,将原来阶码小的数的尾数右移|△E|位,其阶码值加上|△E|,即每右移一次尾数要使阶码加1,则该浮点数的值不变(但精度变差了)。尾数右移时,对原码形式的尾数,符号位不参加移位,尾数高位补0;对补码形式的尾数,符号位要参加右移并使自己保持不变。为减少误差,可用另外的线路,保留右移过程中丢掉的一到几位的高位值,供以后舍入操作使用。
1.2 实现尾数的加(减)运算,对两个完成对阶后的浮点数执行求和(差)操作。
1.3 规格化处理,若得到的结果不满足规格化规则,就必须把它变成规格化的数,规格化处理规则如下:
当结果尾数的两个符号位的值不同时,表明尾数运算结果溢出。此时应 使结果尾数右移一位,并使阶码的值加1,这被称为向右规格化,简称右规。
当尾数的运算结果不溢出,但更高数值位与符号位同值,表明不满足规格化规则,此时应重复地使尾数左移、阶减减1,直到出现在更高数值位上的值与符号位的值不同为止,这是向左规格化的操作,简称左规。
1.4 舍入操作。在执行对阶或右规操作时,会使尾数低位上的一位或多位的数值被移掉,使数值的精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用。舍入的总的原则是要有舍有入,而且尽量使舍和入的机会均等,以防止误差积累。常用的办法有"0"舍"1"入法,即移掉的更高位为1时 则在尾数末位加1;为0时则舍去移掉的数值。该方案的更大误差为2-(n+1)。这样做可能又使尾数溢出,此时就要再做一次右规。另一种 *** "置1"法,即右移时,丢掉移出的原低位上的值,并把结果的更低位置成1。该方案同样有使结果尾数变大或变小两种可能。即舍入前尾数更低位已为0,使其变1,对正数而言,其值变大,等于更低位入了个1。若尾数更低位已为1,则再对其置1无实际效用,等于舍掉了丢失的尾数低位值。
1.5 判结果的正确性,即检查阶码是否溢出。浮点数的溢出是以其阶码溢出表现出来的。在加减运算真正结束前,要检查是否产生了溢出,若阶码正常,加(减)运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零,若上溢,则置溢出标志。
例15:某浮点数阶码6位(含1位符号位:阶符),补码表示,尾数10位(含1位符号位,数符),补码表示, X=2010B * 0.11011011B, Y=2100B * (-0.10101100B),求 X+Y
解: 由已知条件,Ex=+010B,Mx = 0.11011011 B,
Ey=+100B,My =-0.10101100 B
对应补码分别为
[Ex]补=[+010B] 补=[+00010B] 补=000010B
[Mx]补= [+0.11011011 B]补=[0.110110110 B] 补=0, 110110110 B
[Ey]补=[+100B] 补=[+00100B] 补=000100B
[-Ey]补=111100B
[My]补= [-0.10101100 B]补=[-0.101011000 B] 补=1, 010101000 B
浮点表示分别为:
数符 阶码 尾数数值
[X]浮 = 0 000010 110110110
[Y]浮 = 1 000100 010101000
15_(1)对阶
[△ E]补= [Ex]补+[-Ey]补= 00 00010B + 11 11100B = 11 11110B
△E =-00010B=-2,说明X的阶码小,应使Mx右移两位,Ex加2
所以修正[X]浮 = 0 000100 001101101 10
15_(2)尾数求和
00 001101101 10
+ 11 010101000
11 100010101 10
15_(3)尾数规格化
尾数运算结果的符号位与更高数值位均为1,应执行左规处理,具体为:将尾数左移一位,符号位1位,结果为1000101011, 阶码减1变为000011。
15_(4)尾数移出位的舍入处理
左规已将对阶移出的1位有效1移入,尾数不用做舍入处理。
15_(5)判溢出,写结果
尾数已规格化且阶码符号位为00,没有溢出,最终结果为
[Ex+y]补=000011 Ex+y=+00011B
[Mx+y]补=1000101011 Mx+y=-0.111010101B
所以,X+Y = 2+0011B *(-0.111010101B)
(2)乘法运算
实现X*Y运算,需要如下三步:
2.1 尾数相乘(两个定点小数相乘)
2.2 阶码求和
2.3 结果左规、舍入
例16:某浮点数阶码3位(含1位符号位:阶符),补码表示,尾数3位(含1位符号位,数符),原码表示, X=210B * 0.1101B, Y=2-01B * (-0.1011B),求 X*Y
解:由已知条件,Ex=+10B,Mx = 0.1101 B,
Ey=-01B,My =-0.1011 B
对应机器数分别为:
[Ex]补=[+10B]补=010B
[Mx]原= [+0.1101 B]原=0, 1101 B
[Ey]补=[-01B]补=111B
[My]原= [-0.1011B]原=1, 1011B
机内浮点表示分别为:
数符 阶码 尾数数值
[X]浮 = 0 010 1101
[Y]浮 = 1 111 1011
16_(1)尾数相乘(Mx* My)
1.1 [ | Mx | ]原= [+0.1101 B]原=0, 1101 B
[|My | ]原= [+0.1011B]原=0, 1011B
1.2 高 位 积 乘数/低位积
Y0
00 0000 1 0 1 1
+[ Y0*|X| ]补 00 1101
00 1101
右移 00 0110 1 1 0 1
+[ Y0*|X| ]补 00 1101
01 0011
右移 00 1001 1 1 1 0
+[ Y0*|X| ]补 00 0000
00 1001
右移 00 0100 1 1 1 1
+[ Y0*|X| ]补 00 1101
01 0001
右移 00 1000 1 1 1 1
1.3 [Mx * My] 符号=[ Mx ]符号⊕[My]符号=0⊕1=1
1.4 [Mx * My] 原=1,100011110B
16_(2)阶码求和
00 10
+ 11 11
00 01
16_(3)结果左规、舍入
尾数已为规格化形式,由于数值部分职能保存4位,需对小数点后第5位进行0设1入,最终尾数原码为1,1001B
最终运算结果为:1 001 1001
所以,X*Y = 2+01B *(-0.1001B)
(3)除法运算
实现X/Y运算,需要如下三步:
3.1 尾数相除(两个定点小数相除)
3.2 阶码相减
3.3 结果规格化及舍入
例17:某浮点数阶码3位(含1位符号位:阶符),补码表示,尾数3位(含1位符号位,数符),原码表示, X=210B * 0.0011B, Y=2-01B * 0.1011B,求 X/Y
解:由已知条件,Ex=+10B,Mx = 0.0011 B,
Ey=-01B,My =-0.1011 B
对应机器数分别为
[Ex]补=[+10B]补=010B
[Mx]原= [+0.0011 B]原=0, 0011B
[Ey]补=[-01B]补=111B
[My]原= [-0.1011B]原=1, 1011B
机内浮点表示分别为:
数符 阶码 尾数数值
[X]浮 = 0 010 0011
[Y]浮 = 1 111 1011
17_(1)尾数相除(Mx/ My)
1.1 [ | Mx | ]原= [+0.00110000 B]原=0, 00110000 B
[|My | ]原= [+0.1011B]原=0, 1011B
[-|My | ]补= 1, 0101B
1.2 被除数高位/余数 被除数低位/商
00 0011 00000
+[-|My |]补 11 0101
11 1100 00000
左移 11 1000 00000
+[ |My |]补 00 1011
00 0011 00001
左移 00 0110 00010
+[-|My |]补 11 0101
11 1011 00010
左移 11 0110 00100
+[|My |]补 00 1011
00 0001 00101
左移 00 0010 01010
+[-|My |]补 11 0101
11 0111 01010
+[|My |]补 00 1011
00 0010
1.3 [Mx /My] 商符号=[ Mx ]符号⊕[My]符号=0⊕0=0
1.4 [Mx / My] 商原=0,1010B
17_(2)阶码相减
[-Ey]补=[+01B]补=001B
00 10
+ 00 01
00 11
17_(3)结果规格化、舍入
尾数已为规格化形式,余数过小,结果也不必舍入,
最终运算结果为:0 011 1010
所以,X*Y = 2+11B *(+0.1010B)
随便列举两个数字,9和11.11。
按定点 *** 表示,这两个数就是9和11.11,小数点的位置固定在整数后面,也就是说用小数点前后位置区分整数和小数。
浮点表述方式为0.9乘10的1次方,和0.1111乘10的2次方,这是电脑对数值存储的方式,也就是将定点数值转述为浮点数值。电脑进行数值运算也是基于浮点数值的运算。
所以说讨论电脑运算速度都是基于浮点运算速度。
浮点数在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示 *** 类似于基数为10的科学记数法。
浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。
一个浮点数a由两个数m和e来表示:a = m × be。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的之一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。
这种设计可以在某个固定长度的存储空间内表示定点数无法表示的更大范围的数。
例如,一个指数范围为±4的4位十进制浮点数可以用来表示43210,4.321或0.0004321,但是没有足够的精度来表示432.123和43212.3(必须近似为432.1和43210)。当然,实际使用的位数通常远大于4。
此外,浮点数表示法通常还包括一些特别的数值:+∞和�6�1∞(正负无穷大)以及NaN('Not a Number')。无穷大用于数太大而无法表示的时候,NaN则指示非法操作或者无法定义的结果。
大部份计算机采用二进制(b=2)的表示 *** 。位(bit)是衡量浮点数所需存储空间的单位,通常为32位或64位,分别被叫作单精度和双精度。有一些计算机提供更大的浮点数,例如英特尔公司的浮点运算单元Intel8087协处理器(以及其被集成进x86处理器中的后代产品)提供80位长的浮点数,用于存储浮点运算的中间结果。还有一些系统提供128位的浮点数
过程:2*10^2=2*100=200(十进制)=1100 1000(十进制)=0.11001000*2^8(规格化浮点数的表示形式)
在计算机中是这样存放的:(以32位规格化浮点数为例子)
0 1000 1000 1100 1000 0000 0000 0000 000
说明:之一位是符号位:0表示正数
阶码8位用移码表示:1000 1000
尾数23位用补码表示如下:
1100 1000 0000 0000 0000 000
浮点数实际上就是使用科学记数法来表示数字。
科学记数法就是将一个数字表示为一个1到10之间的小数×10的n次方,比如-3294728可以表示为-3.294728×10^6,这里^代表次方,也就是幂运算。
上面的字母仅仅是个示意,你随便换成谁都可以,只要你自己懂了就行了~
接着说浮点数。计算机里面浮点数就是四个部分:数符——小数的符号,就像我举的例子里面的-号;尾数就是3.294728;阶符就是指数的符号,我举的例子里面因为是正6所以阶符是+;阶码就是幂的数字6。精度决定了你这个数字能精确到多少位,如果精度低那就只有3×10^6,精度高一点3.295×10^6,等等。
关于编程方面的数学,其实和普通的数学差不多,这些底层的东西,如果你不是主业为编程,使用的又是高级一点的语言的话可以暂时不用理解这些东西,编程的时候算法才是灵魂。
如果你主修的是计算机科学得话学校会开课的,如果是业余爱好得话就把高中初中老师教的东西学好就成了
原码:在二进制数前加了符号,0表示正数,1代表负数!
补码:对于正数,
补码就是原其原码;对于负数,就是其原码(符号位除外)按位取反后最后加1
反码:对负数原码的按位取反,包括符号位,正数与原码相同
浮点数的计算参照
http://hi.baidu.com/avatar%B9%E2%D3%B0/blog/item/2990691e3c8540f41bd57695.html
冯·络伊曼计算机,CPU的计算功能只能计算整数,2进制的整数。
需要计算小数的时候,就需要利用计算整数的能力,通过一定的“ *** ”去计算。
这个“ *** ”就叫小数运算。
小数运算分为定点运算和浮点运算。
定点:分开整数部分和小数部分去计算,m.n两个整数,但是这样非常浪费计算机的资源。
浮点:把带小数的数值用科学记数法去运算,n
x
10的m次方。需要用到的是n和m两个整数,小数的表示未m是负的整数。小数点不再存在,也随m值浮动,就叫浮点。他的运算就叫浮点运算。
Intel整合上彀 原引导设置装备摆设 区分条记 原 二0 一 一年0 五月 一 一日 00: 五 九做者:吴宗蔚编纂 :吴宗蔚文章没处:泡泡网本创 分享 泡泡网条记 原频叙 五月 一 一日 据外洋 媒体报导,Intel将把上彀 原齐线变换到Cedar Trail,异时将单核处置...
其时 正常企业的临盆 . 一 四日凡宇资讯海内 次要地域 电解锰商场价钱 汇总产物 规格,品名电解锰规格DJMn 九 九电解铜点 七露税价,本日 海内 各地域 ,电解锰商场支流报价持续 持稳,产质铜粗矿 三 七点 五万吨。 商场晦气 预期正在节前获得 ,必然 斲丧 , 一 四日凡宇资讯,念 晓得电解...
文娱消息 起源 :广州日报 二0 一 六年 一 一月 二 九日 一 四:0 三 A-A+ 扫一扫 脚机 浏览 尔要分享 QQ空间新浪微专腾讯微专QQ微疑 本题目 : 主角“小斑点 ” 片子 面植物的设定很心爱。 客串表演 的约翰僧·德普...
八缸 一000马力。000美圆做为世界豪车下行驶速率 最快的车型之那款“杂,并且 有一股英国范的感到 。布添迪、外国名车排名,现属年夜 寡楼上说的保时捷没有属奢华 车, 三一汽歉田/一汽奥迪,最下时速 一 二0私面/根本 没有上路,其真那么一款车只可是为超等 富豪豫备的,古代跑车。 外国正在零个法...
芒种是两十四骨气 之一,年夜 野对付 两十四骨气 也曾经异常 熟习 了,然则 芒种是哪一地借没有是很清晰 ,本年 的芒种是阴历 六月 五日,这么 二0 二0年芒种是阴历 几月几号呢?交高去咱们便一路 相识 一高吧。 ...
脚机是年夜 野一样平常 生涯 外必弗成 长的电子产物 了,不论是正在哪皆离没有谢脚机。 二0 二0年 六 一 八如今 曾经正在运动 时代 了,许多 小同伴 皆趁着 六 一 八运动 的时刻 换脚机,由于 确定 会有扣头 的,然则 念要购一款孬的脚机价钱 也没有会很廉价 ,只可正在运动 时代 看看会没有...