摘要: 不管是在笔试还是面试,经常会遇到字节对齐的问题。今天就来总结一下字节对齐。一 什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问都可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能 阅读全文
posted @ 2012-10-04 10:21 kaifublog 阅读(459) 评论(0) 推荐(1) 编辑
摘要: 在学习程序语言和进行程序设计的时候,交换两个变量的值是经常要使用的,各公司笔试也经常遇到。方法1:标准法通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int a,b;a=10;b=15;int t;t=a;a=b;b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。上面的算法最大的缺点就是需要借助一个临时变量。方法2:算术运算法简单来说,就是通过普通的+和-运算来实现。代码如下: i= 阅读全文
posted @ 2012-09-25 14:45 kaifublog 阅读(3737) 评论(0) 推荐(0) 编辑
摘要: strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下int strcmp ( const char * str1 , const char * str2 ) ; 其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:①str1小于str2返回负值或者-1②str1等于str2返回0③str1大于str2返回正值或者1 strcmp函数实际上是对字符的ASCII码进行比较,实现原理如下: 首先比较两个串的第一个字符,若不相等,则停止比较并得出两个ASCII码大小比较的结果,如果相等就接着比较第二个字符,然 阅读全文
posted @ 2012-09-23 16:53 kaifublog 阅读(520) 评论(0) 推荐(1) 编辑
摘要: 今天北京数码视讯笔试题:使用二分查找算法实现有序数组的关键值查找/*有序数组二分查找算法函数sq_Dichotomy_Search<用数组实现>参数描述: int array[] :被查找数组 int n :被查找数组元素个数 int key :被查找的关键值 返回值: 如果没有找到: sq_Dichotomy_Search = -1 否则: sq_Dichotomy_Search = key数组下标*/int sq_Dichotomy_Search(int array[],int n,int key){ int low,high,mid; low = 0; high = n - 阅读全文
posted @ 2012-09-23 15:22 kaifublog 阅读(579) 评论(1) 推荐(3) 编辑
摘要: 今天参加北京数码视讯笔试遇到这题,现在就总结一下。判断之前先说一下什么是大端什么是小端。大端格式:高地址放低位,低地址放高位。小端格式:高地址放高位,低地址放地位。 采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:内存地址存放内容0x40000x340x40010x12 而在Big-endian模式CPU内存中的存放方式则为:内存地址存放内容0x40000x120x4... 阅读全文
posted @ 2012-09-23 15:00 kaifublog 阅读(575) 评论(0) 推荐(1) 编辑