吴俊敏教授讲解计算机系统浮点数解析

需积分: 9 2 下载量 187 浏览量 更新于2024-07-21 收藏 209KB PPT 举报
"这篇PPT是吴俊敏教授在中国科学技术大学讲授的《程序设计与计算机系统》课程的一部分,主要涵盖了计算机系统中的浮点数表示和运算。内容包括IEEE浮点数标准、浮点数的舍入误差、浮点运算的数学性质以及C语言中浮点数与整数之间的转换问题。" 在计算机科学中,浮点数的表示和运算对于理解程序是如何在计算机系统中运行至关重要。本课件主要讨论了IEEE 754浮点数标准,这是一个1985年制定的国际标准,旨在规范不同计算设备上的浮点数运算,确保它们之间的兼容性和可预测性。在标准实施之前,不同的计算机可能使用各自独特的浮点数格式,这给跨平台编程带来了很大的困扰。 IEEE 754标准定义了浮点数的存储格式,包括单精度(float)和双精度(double)两种,它们都是二进制的表示方式。浮点数由三部分组成:符号位、指数和尾数。这种结构允许表示很大或很小的数值,并能进行高精度的运算,但同时也引入了舍入误差,因为并非所有的十进制小数都能精确地用有限的二进制位来表示。 PPT中还讨论了浮点数的舍入规则,这是在计算过程中不可避免的,因为它涉及到将无穷多的二进制小数位进行截断。舍入可能会导致精度损失,特别是在进行多次运算后。此外,浮点数的运算并不总是遵守我们熟悉的算术定律,比如加法的交换律(a+b=b+a)和分配律(a*(b+c)=a*b+a*c)可能不再成立,这是由于舍入误差的影响。 接着,PPT列举了一系列C语言表达式,用于探讨浮点数和整数之间的转换以及比较。例如,表达式`x==(int)(float)x`可能在某些情况下不成立,因为浮点数到整数的转换可能涉及到舍入,导致原始值与转换后的整数值略有不同。同样,浮点数的负值表示和比较也需要特别注意,如`d<0.0`和`-f>-d`这样的表达式,可能因为浮点运算的精度问题而产生非直觉的结果。 这个PPT深入浅出地介绍了计算机系统中浮点数的基础知识,包括它们的表示、运算和潜在的问题,这对于程序员理解和解决涉及浮点数的计算问题非常有帮助。了解这些概念有助于编写更加高效和可靠的代码,特别是在处理科学计算、图形渲染或任何需要高精度数值计算的领域。