开发者社区> 流楚丶格念> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

计算机组成原理——浮点数加减运算&强制类型转换

简介: 计算机组成原理——浮点数加减运算&强制类型转换
+关注继续查看

浮点数的加减运算


我们可以先通过十进制的浮点数加减运算步骤来类推二进制的


十进制浮点数加减运算步骤:


浮点数加减运算包括五个步骤:① 对阶② 尾数加减③ 规格化④ 舍入⑤ 判溢出


例如:计算9.85211 × 1012 + 9.96007 × 1010


解:


image


二进制浮点数的加减运算


上面我们进行了十进制的浮点数的加减运算,下面我们可以以此类推,也按照上面五个步骤来做


直接看一个例题:已知十进制数X=−5/256、Y=+59/1024,按机器补码浮点运算规则计算X−Y,结果用二进制表示,浮点数格式如下:阶符取2位,阶码取3位,数符取2位,尾数取9位


解:


首先我们先用补码表示阶码和尾数,


5D = 101B,1/256 = 2-8 → X = - 101 × 2-8 = - 0.101 × 2-5 = - 0.101 × 2-101

59D = 111011B,1/1024 = 2-10 → Y = + 111011 × 2-10 = + 0.111011 × 2-4 = + 0.111011 × 2-100


再转化成补码形式


X:11011,11.011000000


(X是负数 转化成补码取反+1 阶码 尾数都一样操作)


Y:11100,00.111011000


1. 对阶


使两个数的阶码相等,小阶向大阶看齐,尾数毎右移一位,阶码加1


① 求阶差:[ΔE]补=11011+00100=11111,知ΔE=−1


② 对阶:


X:11011,11.011000000 → 11100,11. 101100000


X = - 0.0101 × 2-100


2. 尾数加减


-Y:11100,11.000101000


(求码的负数的方法:连符号位一块取反+1)


然后让X加上-Y


11.101100000
+   11.000101000
    10.110001000


所以X-Y:11100, 10.110001000


3. 规格化


X-Y:11100, 10.110001000 à 11101,11.011000100


4. 舍入


无舍入


5. 判溢出


常阶码,无溢出,结果真值为2−3×(−0.1001111)2


浮点数的加减运算——舍入规则


“0”舍“1”入法:


类似于十进制数运算中的“四舍五入”法,即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能会使尾数又溢出,此时需再做一次右规。


恒置“1”法:


尾数右移时,不论丢掉的最高数值位是“1”还是“0”,都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。


例如


image


强制类型转换


image


转化的可操作性


char → int → long → double


float → double


int → float:可能损失精度


float → int:可能溢出及损失精度


结论:范围、精度从小到大,转换过程没有损失


原因:拿32位来说:


int:表示整数,范围 -231 ~ 231-1 ,有效数字32位


float:表示整数及小数,范围 ±[2-126 ~ 2127×(2−2−23)],有效数字23+1=24位


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
计算机的运算方法
计算机的运算方法
12 0
【计算机系统】位运算与逻辑运算
【计算机系统】位运算与逻辑运算
34 0
图解计算机中的数值范围和浮点数运算
在【程序员进阶系列】专题的《图解计算机中数据的表示形式》一文中,我们详细的说明了在计算机中数据的表示形式。今天,我们继续来说计算机中的数值范围和浮点运算相关的知识。走起,继续,我们一起进阶,一起牛逼。
51 0
【2018杭州云栖】大数据计算专场:带你感知无处不在的超大规模大数据计算
云栖大会首日,与主论坛一同亮相的大数据计算专场获得了极大关注。阿里巴巴计算平台六位技术专家与衣二三公司CTO,共同引领开发者们直击阿里巴巴超大规模的大数据计算服务,解构数据世界,分享大数据计算前沿科技。整个下午座无虚席,众多来宾站立参与全程。
4982 0
BSON及mongoDB数据类型
JSON是一种被广泛使用的轻量级的数据交换格式,支持现今绝大多数主流的开发语言。而近几年崛起的mongDB则采用了类JSON的数据格式,在JSON之上进行了丰富和增强,使得mongoDB可以处理及报错更大的数据类型。
1336 0
LeetCode 67 Add Binary(二进制相加)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50623435 翻译 给定两个二进制字符串,返回它们的和(也是二进制字符串)。
677 0
[LeetCode] Add Binary
The idea is to add the two binary numbers (represented as strings) from back to forth bit by bit and store the result in the longer string.
607 0
+关注
流楚丶格念
csdn平台优质创作者,51cto TOP博主,360图书馆科技博主,燕山大学目前大三在读,日拱一卒,功不唐捐,加油!!!
1010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载