整数运算、浮点运算与溢出
2017-11-01 21:47
204 查看
1. 一个示例
sizeof(int) == 4 的机器上,也即 32 位机器,使用 int 型变量存储 200*300*400*500 会得到 -884901888。这显然违犯了整数运算的特性,计算一组正数的乘积不应该产生一个负数结果。另一方面,整数在计算机中的运算满足数学上对整数运算的许多性质。乘法的结合和交换律,下面的任何一个 C 表达式,都会得到 -884901888 同样的负数,数值溢出结果:
(500*400)*(300*200) ((500*400)*300)*200 ((200*500)*300)*400 ...
计算机中的浮点运算有时则会呈现出完全不同的数学属性。由于表示的精度有限,浮点运算是不可结合的。
3.14 + (1e20 - 1e20) ⇒ 3.14 (3.14 + 1e20) - 1e20 ⇒ 0.0
2. 计算机对数字的表示
整数运算和浮点运算会有不同的数学特性,是因为它们在处理数字表示有限性的方式不同 —— 整数的编码虽然只能编码一个相对较小的数值范围,但这种表示是精确的;而浮点数虽然可以编码一个较大的数值范围,其表示只是近似的。相关文章推荐
- 理解整数运算的属性以及溢出的检查
- 浮点运算转换成整数运算
- Python入门(一):整数、浮点数和布尔值的运算
- linux shell 实现 四则运算(整数及浮点) 简单方法
- 用“UL”避免Keil C51大整数常量运算溢出错误
- linux shell 实现 四则运算(整数及浮点) 简单方法
- linux shell 实现 四则运算(整数及浮点) 简单方法
- shell脚本浮点数,整数运算;for循环1加到100;Ubuntu12.04LTS 启动界面添加root登录;查找截取循环求和
- 检查整数运算是否溢出
- inux shell 实现 四则运算(整数及浮点) 简单方法
- Linux shell实现 四则运算(整数及浮点) 简单方法
- linux shell 实现 四则运算(整数及浮点) 简单方法
- 对整数和浮点数存储,little-endian和big-endian字节顺序,以及位运算的一点回顾
- 整数运算溢出检查
- JS 浮点运算精度解决办法 (把小数转换为整数进行计算【但是不能超过js的整数上限】)
- Python 整数和浮点数运算
- 不利用浮点运算,在屏幕上画一个圆 (x**2 + y**2 = r**2,其中 r 为正整数)
- shell 实现整数及浮点数四则运算的简单方法 by 程默
- C++最接近整数的浮点运算
- linux shell 实现 四则运算(整数及浮点) 简单方法