博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20155216 第六周课上测试补交及教材练习完成
阅读量:5149 次
发布时间:2019-06-13

本文共 2129 字,大约阅读时间需要 7 分钟。

20155216 第六周课上测试补交及教材练习完成

第六周课上测试-3-ch02

将程序正常运行结果如下:

1071483-20171028182517226-1366213792.png

将程序使用断点调试后运行结果为:

1071483-20171028182653711-1569901483.png

与运行结果的不同和联系:

运行结果输出的是v和uv的十进制结果,断点调试过程输出的是十六进制结果。

第六周课上测试-4-ch03

经过删除的代码如图:(压栈和出栈处在图中以标出)

1071483-20171028183911805-140421553.png

教材P97 2.96

int float_f2i(float_bits f);

对于浮点数f,这个函数计算(int)f。如果f是NaN,你的函数应该向零舍入。如果f不能用整数表示(例如,超出表示范围,或者它是一个NaN),那么那么函数应该返回0x80000000。
测试你的函数,对参数f可以取的所有2^32个值求值,将结果与你使用的机器的浮点运算得到的结果相比较。

代码执行实现这些指定的浮点运算的位操作,用unsigned 类型模拟int去运算浮点数的转换,将一个float类型转换为整数,用unsigned实现一个float数转换为intt时的位级表示。

#include 
#include
typedef unsigned float_bits;int float_f2i(float_bits f){ unsigned sign=f>>31; unsigned exp = (f>>23)&0xff; unsigned frac = f&0x7fffff; if(exp == 0) return 0; if(exp == 0xff) return 0x80000000; unsigned m = frac+0x800000; int e =exp-127; if(e<0) return 0; else if(e>31) return 0x80000000; else if(e<23) m>>(23-e); else m<<(e-23); return sign<<31|m;}int main(){ int i; unsigned u; float f; for(u=INT_MIN;u<=INT_MAX;u++) { f=*((float*)&u); i=float_f2i(u); if((int)f == i) printf("%u ok\n",u); else { printf("error"); return -1; } }}

测试0~10的结果为:

1071483-20171028213530555-973159333.png

教材P97 2.97

float_bits float_i2f(int i);

对于函数i,这个函数计算(float)i的位级表示。
测试你的函数,对参数f可以取的所有2^32个值求值,将结果与你使用的机器的浮点运算得到的结果相比较。

代码执行实现这些指定的浮点运算的位操作,用unsigned 类型模拟float去运算浮点数的转换,将一个int类型转换为浮点数,用unsigned实现一个int数转换为float时的位级表示。

#include 
#include
typedef unsigned float_bits;float_bits float_i2f(int i);int main(){ int i; for(i=INT_MIN;i<=INT_MAX;i++) { float_i2f(i); printf("\n"); } return 0;}float_bits float_i2f(int i){ unsigned sign=0; unsigned exp=0; if(i<0) { i=-i; sign=1; } unsigned frac=i; i=i|(i>>1); i=i|(i>>2); i=i|(i>>4); i=i|(i>>8); i=i|(i>>16); i=i^(i>>1); frac=(frac-i); while(i>>=1) exp++; frac=(frac<<(23-exp)) & 0xFFFFFFFF; exp+=127; sign=sign & 1; exp=exp& 0xFF; printf("exp=%d\t frac=%d\t i=%d\t",exp,frac,i); return(sign<<31)|(exp<<23)|frac;}

测试0~10的结果为:

1071483-20171028213915570-796676916.png

转载于:https://www.cnblogs.com/LeeX1997/p/7748188.html

你可能感兴趣的文章
js兼容公用方法
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
【Mac + GitHub】之在另一台Mac电脑上下载GitHub的SSH链接报错
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
std::min error C2059: 语法错误:“::” 的解决方法
查看>>
Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比
查看>>
jQuery 给div绑定单击事件
查看>>
Exceptionless 生产部署笔记
查看>>
有关快速幂取模
查看>>
转 ObjExporter Unity3d导出场景地图寻路
查看>>