浮点数加减法的4个步骤 为什么浮点数个位数相加不是整数?
为什么浮点数个位数相加不是整数?
主要注意是数可以表示的原因:
整数:正数是原码,负数是补码,加法这个可以再相乘,乘法也这个可以很快地能完成
浮点数:第一位是符号位,来表示异号,然后把是阶码(用移码来表示),有若干位,最后的是尾数(用原码可以表示)
很的确,浮点数的加法运算简单的方法要参与对位,那是把阶码变的一致,然后再再按整数乘积,后来再作根据情况,成为规范标准数,当然比整数慢了,整数就再数字相加,乘法的原理也应该差不多,除了尾数,还得对阶码并且判断
移码,通常用在浮点数的阶码中,可用补码求移码的规则是:?
算机中的移码
移码(又叫增码)是符号位取反的补码,一般用做浮点数的阶码,引入的目的是为了只要浮点数的机器零为全0。
①移码的定义:设由1位符号位和n位数值位横列的阶码,则[X]移2EnX-2n≤X≤2n
比如:X+1011[X]移11011符号位“1”意思是正号
X-1011[X]移00101符号位“0”来表示负号
②移码与补码的关系:[X]移与[X]补的关系是符号位互为相反数(仅符号位差别),
比如:X+1011[X]补01011[X]移11011
X-1011[X]补10101[X]移00101
③移码运算应注意的问题:
◎对移码运算的结果要使之关于修改〈专利法〉的决定,抵消量为2en,即对结果的符号位取反后才是移码形式的真确结果。
◎移码来表示中,0有同样的编码——1000…00,当又出现000…00时(意思是-2En),一类浮点数下溢。
浮点数的运算规则
1、浮点加减法的运算步骤
设两个浮点数XMx※2ExYMy※2Ey
实现方法X±Y要用如下5步能完成:
①对阶操作:小阶向大阶向他看齐
②通过尾数加减运算
③规格化处理:尾数接受运算的结果要变成规格化的浮点数,对此双符号位的补码尾数来说,就前提是是
001×××…××或110×××…××的形式
若不条件符合本案所涉形式要进行左规或右规处理。
④近似值能操作:在先执行对阶或右规操作时广泛“0”舍“1”入法将向左移动出去的尾数数值通过舍位,以切实保障精度。
⑤判结果的正确性:即检查一下阶码是否是流出
若阶码下溢(移码表示是00…0),要置结果为机器0;
若阶码煎灼(最多了阶码表示的最大值)置逸出标志。
例题:简单假设X0.0110011*211,Y0.1101101*2-10(此处的数均为二进制)??算出XY;
解:[X]浮:010101100110
[Y]浮:001101101101
符号位阶码尾数
准备:求阶差:│ΔE│|1010-0110|0100
第二步:对阶:Y的阶码小,Y的尾数右移4位
[Y]浮 0101000001101101完全保存到
第二步:尾数乘积,区分双符号位的补码乘除运算
001100110
000000110
001101100
第四步规格化:不满足规格化没有要求
第五步:舍入一次性处理,按结构0舍1入法处理
故到最后运算结果的浮点数格式为:010101101101,
即XY0.1101101*210
2、浮点乘除法的运算步骤
①阶码运算:阶码异或(乘法)或阶码求差(除法)
即[ExEy]移[Ex]移[Ey]补
[Ex-Ey]移[Ex]移[-Ey]补
②浮点数的尾数处理:浮点数中尾数乘除法运算结果要进行舍入处理
例题:X0.0110011*2E11,Y0.1101101*2E-10
求X※Y
解:[X]浮:010101100110
[Y]浮:001101101101
第一步:阶码乘积
[ExEy]移[Ex]移[Ey]补101011101000
1000为移码来表示的0
第二步:原码尾数乘积的结果为:
010101101101110
第四步:规格化去处理:已行最简形矩阵规格化要求,不需左规,尾数增加,阶码变为。
第四步:最高有效位去处理:按浮点数规则,加1参与修正
所以X※Y0.1010111※2E000
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。