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

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

浮点数的加减运算


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


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


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


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


解:



二进制浮点数的加减运算


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


直接看一个例题:已知十进制数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”。这种方法同样有使尾数变大和变小的两种可能。


例如



强制类型转换



转化的可操作性


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位


相关文章
|
7月前
【408计算机组成原理】—原码的乘法运算(九)
【408计算机组成原理】—原码的乘法运算(九)
|
2月前
|
存储
【机组期末速成】计算机的运算方法|进制转换|无符号数与有符号数|数的定点表示与浮点表示|定点运算
【机组期末速成】计算机的运算方法|进制转换|无符号数与有符号数|数的定点表示与浮点表示|定点运算
105 0
|
索引 Windows
【计算机系统】整数与浮点数【详解】(一)
【计算机系统】整数与浮点数【详解】(一)
601 0
【计算机系统】整数与浮点数【详解】(一)
|
21天前
|
存储 编译器 C语言
【C语言】:整型提升,算术转换与大小端的介绍
【C语言】:整型提升,算术转换与大小端的介绍
11 0
|
2月前
|
存储 编译器 C语言
【C语言】数据的存储(基本类型介绍、原码、反码、补码详解、大小端的理解、浮点数的存储规则)
【C语言】数据的存储(基本类型介绍、原码、反码、补码详解、大小端的理解、浮点数的存储规则)
35 0
|
2月前
|
存储 编译器 C语言
爱上C语言:整型和浮点型在内存中的存储(进制转换,原码,反码,补码以及大小端)
爱上C语言:整型和浮点型在内存中的存储(进制转换,原码,反码,补码以及大小端)
|
7月前
|
存储
【408计算机组成原理】—加减运算和溢出判断(八)
【408计算机组成原理】—加减运算和溢出判断(八)
|
9月前
|
数据处理
二进制算术运算的介绍
二进制算术运算 引言: 二进制算术运算是计算机科学中的重要概念,它是计算机内部运算的基础。本文将介绍二进制算术运算的基本概念和常见的运算符,以及如何进行二进制数的加法、减法、乘法和除法运算。 一、二进制算术运算的基本概念 二进制数是由0和1组成的数,它是计算机中表示数据的基本形式。在二进制算术运算中,我们使用了一些基本的运算符,包括加法、减法、乘法和除法。这些运算符在二进制数中的运算规则与十进制数中的运算规则类似,但是需要注意的是,二进制数中没有负数的概念,所以减法运算需要借位。 二、二进制数的加法运算 二进制数的加法运算与十进制数的加法运算类似,只需要按照从右到左的顺序逐位相加,并考虑
101 1
|
10月前
|
存储 编译器 C语言
C语言(二) 补码,运算值与表达式
C语言(二) 补码,运算值与表达式
124 0
浮点数在内存中的运算
这篇博客将给大家介绍浮点数在内存中是如何进行计算的