2012年5月4日

C语言:内存字节对齐详解

摘要: C语言:内存字节对齐详解[转载] 一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个 阅读全文

posted @ 2012-05-04 16:35 飞鸟依然 阅读(294) 评论(2) 推荐(1)

【解惑】剖析float型的内存存储和精度丢失问题(转)

摘要: 【解惑】剖析float型的内存存储和精度丢失问题(转)问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么?现在我们就详细剖析一下浮点型运算为什么会造成精度丢失?1、小数的二进制表示问题首先我们要搞清楚下面两个问题: (1) 十进制整数如何转化为二进制数 算法很简单。举个例子,11表示成二进制数: 11/2=5 余 1 5/2=2 余 1 2/2=1 余 0 1/2=0 余 1 0结束 11二进制表示为(从下往上):1011 这里提一点:只要遇到除以后的结果为0了就结束了,大家想一想,所有的整数除以2是不是一定能够最终得到0。换句话说,所有的整数转变为二 阅读全文

posted @ 2012-05-04 16:18 飞鸟依然 阅读(236) 评论(0) 推荐(0)

导航