369.0 和0.00396E8,规格化整数转化为浮点数数后各是多少

请将十进制数0.07525表示为规格化浮点数,阶码(包括阶符)为4位二进制位,尾数(包括)尾符为8位二进制数,均采用补码形式_百度作业帮
拍照搜题,秒出答案
请将十进制数0.07525表示为规格化浮点数,阶码(包括阶符)为4位二进制位,尾数(包括)尾符为8位二进制数,均采用补码形式
请将十进制数0.07525表示为规格化浮点数,阶码(包括阶符)为4位二进制位,尾数(包括)尾符为8位二进制数,均采用补码形式
十进制的小数转化为二进制的数,方法为:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止.如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位.换句话说就是0舍1入.举例:22.8125转二进制,这样计算:整数和小数分别转换.整数除以2,商继续除以2,得到0为止,将余数逆序排列.22 / 2
11 余011/2
余 1所以22的二进制是10110小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列.0..625 取整1,小数部分是0.6250.625x2=1.25 取整1,小数部分是0.250.25x2=0.5 取整0,小数部分是0.50.5x2=1.0 取整1,小数部分是0,结束所以0.8125的二进制是0.1101十进制22.8125等于二进制所以,0.07525表示成二进制是:0..1505
00.301*2=0.602
00.602*2=1.204
10.204*2=0.408
00.408*2=0.816
00.816*2=1.632
10.632*2=1.264
10.264*2=0.528
00.528*2=1.056
10.056*2=0.112
00.112*2=0.224
00.224*2=0.448
00.0=1.^-3(由于你的需求是:尾数(包括)尾符为8位二进制数)所以,0.07525(十进制)=1.^-3(二进制)阶码=-3+127=124符号位 指数部分 尾数部分0 101001123人阅读
大规模数学运算中有时会碰到结果为NaN的情况,由于NaN参与任何比较得到false(这点与inf不同!),将破坏正常的程序逻辑,又因为NaN同任何数做数学运算得到NaN,具有传递性,使得定位非常困难。
NaN产生的最可能的原因是 0*inf ,大多数路径是这样的:
1/subnormal = inf 或 1/0 = inf --&&0 * inf = nan
下面的代码重现了这一过程:
#include &stdio.h&
#include &math.h&
#include &float.h&
int main()
& & float f = FLT_MIN;
& & float r = 1.0/f;
& & printf(&Normal: f = %e, r = 1/f = %e\n&, f, r);
& & int subf_i = 0x3;
& & f = *(float *)&subf_i;
& & r = 1.0/f;
& & float mul = r *
& & printf(&Subnormal: f = %e, r = 1/f = %e, f*r = %e, 0*r = %e\n&, f, r, mul, 0.0*r);
& & return 0;
C99提供的 fpclassify() 宏能够判断浮点数的类型,一种典型的应用方法如下:
for ( i = 0; i & i++ )
int fp_class = fpclassify(f[i]);
switch(fp_class)
case FP_ZERO:
case FP_NORMAL:
n_valid++;
case FP_SUBNORMAL:
case FP_INFINITE:
case FP_NAN:
另外,可以使用 isnormal(), isnan(), isfinite() 等分别判断某些非规约类型,C++中也有对应的函数可以使用。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:93778次
积分:1455
积分:1455
排名:第14329名
原创:50篇
转载:26篇
评论:10条
(1)(1)(3)(1)(2)(1)(3)(1)(3)(1)(1)(1)(1)(2)(7)(4)(5)(1)(3)(6)(9)(4)(4)(3)(2)(3)(3)浮点数的二进制表示 - 阮一峰的网络日志若浮点数用补码表示,判断运算结果是否规格化数的方法是( ).A. 阶符与数符相同 B. 阶符与数符相异 C. 数符与尾数最高有效数位相同 D. 数符与尾数最高有效数位相异答案C是错误的!_百度作业帮
拍照搜题,秒出答案
若浮点数用补码表示,判断运算结果是否规格化数的方法是( ).A. 阶符与数符相同 B. 阶符与数符相异 C. 数符与尾数最高有效数位相同 D. 数符与尾数最高有效数位相异答案C是错误的!
若浮点数用补码表示,判断运算结果是否规格化数的方法是( ).A. 阶符与数符相同 B. 阶符与数符相异 C. 数符与尾数最高有效数位相同 D. 数符与尾数最高有效数位相异答案C是错误的!
很简单.数符为0,这个数就是正数,正数补码就是其本身,其最高有效位(阶码使用标准移码的话规格化后尾数最高有效位就是小数点后第一位)必定为1,数符0和最高有效位的1相异.数符为1,这个数就是个负数,求负数的补码有一步叫按位取反(一般来说浮点数可以存储的有效位不会小于6位),原本最高有效位的1变成了0,所以数符1和最高有效位的0相异.把非规格化的浮点数N=00110规格化,_百度作业帮
拍照搜题,秒出答案
把非规格化的浮点数N=00110规格化,
把非规格化的浮点数N=00110规格化,
首先把浮点数化成机器码 0,00110
当基数为2时,尾数最高位为1的数为规格化数。规格化时,尾数左移一位,阶码减1(即左规);尾数右移一位,阶码加1(即右规)。
上题中,分号左边的是阶码,阶码是整数。逗号前面的是阶符,0表示是正数,1表示负数,逗号后免得是阶码的数值部分。分号后面的是尾数,尾数是小数,小数点前面的是...

我要回帖

更多关于 浮点数转化为定点数 的文章

 

随机推荐