C语言支持的基本数据类型
float:单精度浮点数,存储长度:32 double :双精度浮点数,存储长度:64 long double :扩展精度浮点数,存储长度:80 / 96
科学计数法(Scientific Notation)与浮点数
[
浮点数(Floating Point)的表示范围
[
浮点数的表示
[
IEEE 754 标准
现在所有通用计算机都采用IEEE 754来表示浮点数 [
机器数转换为真值
[
真值转换为机器数
已知float型变量x的值为-12.75,求x的机器数是多少? -12.75=-1100.11B=-1.10011B x 23(2的3次方),阶(指数)为3 因此,符号S=1 阶码E=127+3=128+2=1000 0010 显式表示的部分尾数Significant= 100 1100 0000 0000 0000 0000 x 的机器数表示为: 1| 1000 0010 |100 1100 0000 0000 0000 0000 转换为十六进制表示为:C14C0000H
0的机器数表示
[
+∞/-∞的机器数表示
浮点数除0的结果是+/- ∞, 而不是溢出异常.(整数除0为异常) 为什么要这样处理? • 可以利用+∞/-∞作比较。例如:X/0>Y可作为有效比较 How to represent +∞/-∞? • Exponent : all ones (11111111B = 255) • Significand: all zeros +∞ : 0 11111111 00000000000000000000000 -∞ : 1 11111111 00000000000000000000000 相关操作: 5.0 / 0 = +∞, -5.0 / 0 = -∞ 5+(+∞) = +∞, (+∞)+(+∞) = +∞ 5 - (+∞) = -∞, (-∞) - (+∞) = -∞ etc
“非数”的表示
Sqrt (- 4.0) = ? 0/0 = ? – 称为Not a Number (NaN) - “非数” How to represent NaN Exponent = 255 Significand: nonzero NaNs 可以帮助调试程序 相关操作: sqrt (-4.0) = NaN, 0/0 = NaN, op (NaN,x) = NaN ,+∞+(-∞) = NaN, +∞- (+∞) = NaN ,∞/∞ = NaN
非规格化数(Denorms)的表示
[
关于浮点数精度的一个例子
[
视频链接: