对于汇编语言中real4、real8、real10的存储原理一直搞不清楚。下面是我做的几个例子:
3.0用real4存储:
00 00 40 40
00000000 00000000 01000000 01000000
3.0用real8存储:
00 00 00 00 00 00 08 40
00000000 00000000 00000000 00000000 00000000 00000000 00001000 01000000
0.3用real4存储:
9A 99 99 3E
10011010 10011001 10011001 00111110
0.3用real8存储:
33 33 33 33 33 33 D3 3F
00110011 00110011 00110011 00110011 00110011 00110011 11010011 00111111
0.03用real4存储:
8F C2 F5 3C
10001111 11000010 11110101 00111100
0.03用real8存储:
B8 1E 85 EB 51 B8 9E 3F
10111000 00011110 10000101 11101011 01010001 10111000 10011110 00111111
汇编语言中real4、real8、real10的存储原理是什么
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 赵4老师 2023-06-19 17:26关注
仅供参考:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { float f; double d; char bs[65]; char b[65]; char s[80]; unsigned char *p; char e[12]; char *t; int ex; int flag; flag=0; while (1) { printf("Input a float point number or 0xXXXXXXXX or 0xXXXXXXXXXXXXXXXX:");fflush(stdout); rewind(stdin); fgets(s,80,stdin); if ('\n'==s[0]) return 1; if (1==sscanf(s,"0x%16I64X",(__int64 *)&d) && strlen(s)>11) {flag=2;break;} if (1==sscanf(s,"0x%8X" ,( int *)&f)) {flag=1;break;} if (1==sscanf(s,"%f" , &f) && 1==sscanf(s,"%lf" , &d)) {flag=3;break;} } if (flag&1) { printf("f=%g\n",f); p=(unsigned char *)&f; printf("hex=%02X %02X %02X %02X\n",p[3],p[2],p[1],p[0]); ltoa(*(long *)&f,b,2); sprintf(bs,"%032s",b); printf("bin=%s\n",bs); printf("bin=%.1s %.8s %s\n",bs,bs+1,bs+9); strncpy(e,bs+1,8);e[8]=0; ex=strtol(e,&t,2); printf(" %c %-4d-127 1.%s\n",(bs[0]=='0')?'+':'-',ex,bs+9); ex-=127; printf(" %c %-8d 1.%s\n",(bs[0]=='0')?'+':'-',ex,bs+9); } if (flag&2) { printf("\nd=%lg\n",d); p=(unsigned char *)&d; printf("hex=%02X %02X %02X %02X %02X %02X %02X %02X\n",p[7],p[6],p[5],p[4],p[3],p[2],p[1],p[0]); _i64toa(*(__int64 *)&d,b,2); sprintf(bs,"%064s",b); printf("bin=%s\n",bs); printf("bin=%.1s %.11s %s\n",bs,bs+1,bs+12); strncpy(e,bs+1,11);e[11]=0; ex=strtol(e,&t,2); printf(" %c %-6d-1023 1.%s\n",(bs[0]=='0')?'+':'-',ex,bs+12); ex-=1023; printf(" %c %-11d 1.%s\n",(bs[0]=='0')?'+':'-',ex,bs+12); } return 0; } //Input a float point number or 0xXXXXXXXX or 0xXXXXXXXXXXXXXXXX:0x3FC0000000000000 // //d=0.125 //hex=3F C0 00 00 00 00 00 00 //bin=0011111111000000000000000000000000000000000000000000000000000000 //bin=0 01111111100 0000000000000000000000000000000000000000000000000000 // + 1020 -1023 1.0000000000000000000000000000000000000000000000000000 // + -3 1.0000000000000000000000000000000000000000000000000000 // //Input a float point number or 0xXXXXXXXX or 0xXXXXXXXXXXXXXXXX:0x3E000000 // //f=0.125 //hex=3E 00 00 00 //bin=00111110000000000000000000000000 //bin=0 01111100 00000000000000000000000 // + 124 -127 1.00000000000000000000000 // + -3 1.00000000000000000000000 // //Input a float point number or 0xXXXXXXXX or 0xXXXXXXXXXXXXXXXX:0.125 //f=0.125 //hex=3E 00 00 00 //bin=00111110000000000000000000000000 //bin=0 01111100 00000000000000000000000 // + 124 -127 1.00000000000000000000000 // + -3 1.00000000000000000000000 // //d=0.125 //hex=3F C0 00 00 00 00 00 00 //bin=0011111111000000000000000000000000000000000000000000000000000000 //bin=0 01111111100 0000000000000000000000000000000000000000000000000000 // + 1020 -1023 1.0000000000000000000000000000000000000000000000000000 // + -3 1.0000000000000000000000000000000000000000000000000000 // //Input a float point number or 0xXXXXXXXX or 0xXXXXXXXXXXXXXXXX: //
解决 无用评论 打赏 举报
悬赏问题
- ¥200 csgo2的viewmatrix值是否还有别的获取方式
- ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
- ¥15 请把下列每一行代码完整地读懂并注释出来
- ¥15 pycharm运行main文件,显示没有conda环境
- ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
- ¥15 为什么eclipse不能再下载了?
- ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
- ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
- ¥15 特定网页无法访问,已排除网页问题
- ¥50 如何将脑的图像投影到颅骨上