2016 - 2024

感恩一路有你

浮点数加减法的4个步骤 为什么浮点数个位数相加不是整数?

浏览量:3445 时间:2023-05-13 17:01:14 作者:采采

为什么浮点数个位数相加不是整数?

主要注意是数可以表示的原因:

整数:正数是原码,负数是补码,加法这个可以再相乘,乘法也这个可以很快地能完成

浮点数:第一位是符号位,来表示异号,然后把是阶码(用移码来表示),有若干位,最后的是尾数(用原码可以表示)

很的确,浮点数的加法运算简单的方法要参与对位,那是把阶码变的一致,然后再再按整数乘积,后来再作根据情况,成为规范标准数,当然比整数慢了,整数就再数字相加,乘法的原理也应该差不多,除了尾数,还得对阶码并且判断

移码,通常用在浮点数的阶码中,可用补码求移码的规则是:?

算机中的移码

移码(又叫增码)是符号位取反的补码,一般用做浮点数的阶码,引入的目的是为了只要浮点数的机器零为全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

阶码 浮点数 尾数 移码 符号

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。