十进制29.86表示为二进制的浮点数,其中尾数为24位,阶码为8位
答案:2 悬赏:0 手机版
解决时间 2021-01-10 21:33
- 提问者网友:绫月
- 2021-01-10 01:32
十进制29.86表示为二进制的浮点数,其中尾数为24位,阶码为8位
最佳答案
- 五星知识达人网友:鱼忧
- 2021-01-10 02:46
29.86D≈11101.11011100001010001111B=1.110111011100001010001111×2^4B
因此阶为4,尾数(24位)为110111011100001010001111
不过,你是否弄错了。IEEE754标准中尾数应该只有23位啊怎么会使24位?
我还是按IEEE754标准回答吧。毕竟这个是标准啊
阶码为 127+4=131D=10000011B
尾数(23位)为11011101110000101000111
该数为正数,符号位为0
所以29.86D对于的单精度浮点数为0 10000011 11011101110000101000111B
即0100,0001,1110,1110,1110,0001,0100,0111B=41EEE147H
因此阶为4,尾数(24位)为110111011100001010001111
不过,你是否弄错了。IEEE754标准中尾数应该只有23位啊怎么会使24位?
我还是按IEEE754标准回答吧。毕竟这个是标准啊
阶码为 127+4=131D=10000011B
尾数(23位)为11011101110000101000111
该数为正数,符号位为0
所以29.86D对于的单精度浮点数为0 10000011 11011101110000101000111B
即0100,0001,1110,1110,1110,0001,0100,0111B=41EEE147H
全部回答
- 1楼网友:迷人又混蛋
- 2021-01-10 04:06
十进制 数表示为 二进制32位浮点数,即 按 IEEE-754 标准 存放 float 型数据。
可以用 union 方式 按字节读出来。c 程序如下:
#include
union uu{
float x;
char s[4];
} u;
int main(){
int i,a;
char s[9];
u.x= 29.86; //给入float 型数值
for (i=3;i>=0;i--){
printf("%02x",0xff & u.s[i]); //按16进制输出内存,便于阅读
}
printf("\n");
for (i=3;i>=0;i--){
a = 0xff & u.s[i];
itoa(a,s,2);
printf("%08s",s); // 按2进制输出内存
}
return 0;
}
得:
16进制: 41eee148
2进制: 01000001
可以用 union 方式 按字节读出来。c 程序如下:
#include
union uu{
float x;
char s[4];
} u;
int main(){
int i,a;
char s[9];
u.x= 29.86; //给入float 型数值
for (i=3;i>=0;i--){
printf("%02x",0xff & u.s[i]); //按16进制输出内存,便于阅读
}
printf("\n");
for (i=3;i>=0;i--){
a = 0xff & u.s[i];
itoa(a,s,2);
printf("%08s",s); // 按2进制输出内存
}
return 0;
}
得:
16进制: 41eee148
2进制: 01000001
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯