公告

Love you forever,anyshpm.

float表示

首先看一段代码:

#include <iostream>
using namespace std;

int main()
{
	int i1 = 5;
	float f1 = i1;
	cout << f1 <<endl;

	int i2 = 37;
	float f2 = *(float*)&i2;
	cout << f2 <<endl;
}

答案输出

由于float在内存中的表示如下:

f1不是原来的5,而是1.25*2的2次方,重新表示成浮点数的形式。
相对于f2,&i取地址变为int*后又转换成float*,再对它进行解引用,所以在同一块内存地址上以float形式读取。所以,37对应的比特位在浮点数的形式上,只能以此计算出.xxxxx的部分,而exp位为0,所以最后计算出的浮点数将为一个奇小无比的数。

归并排序

归并排序算法是典型的分治算法,对于规模较大的问题,可以分解成若干容易求解的简单的问题,最后把解合并构成初始问题的解。不存在跳跃比较,所以归并排序是一种稳定的排序算法。比较占用内存,效率高且稳定。

基本思想:假设初始序列有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2](上括号,不小于它的最小整数)个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,称为2路归并排序。 阅读全文…

读书笔记–深入理解计算机系统chap1-4

第一章 计算机系统漫游

1.信息就是位+上下文
源程序(0、1位序列;8位一组称为字节)–每个字节表示程序中某个文本字符
大部分的现代系统都是用ASCII标准来表示文本字符,这种方式实际上就是用一个唯一的单字节大小的整数值来表示每个字符
每个文本行都以一个不可见的换行符’\n’来结束的,对应的整数值为10
系统中所有的信息——包括磁盘文件、存储器重的程序、存储器中存放的用户数据以及网络上传送的数据,都是由一串位表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。

2.程序被其他程序翻译成不同的格式
例如,gcc编译器驱动程序的翻译过程可以分为4个过程:
-hello.c源程序(文本)–>预处理器(cpp)-hello.i被修改的源程序(文本)–>编译器(ccl)-hello.s汇编程序(文本)–>汇编器(as)-hello.o可重定位目标程序(二进制)+外部printf.o–>链接器(ld)-hello可执行目标程序(二进制)–>
汇编语言非常有用,它为不同高级语言的不同编译器提供了通用的输出语言。

3.了解编译系统如何工作是大有益处的

(转)线性表的顺序存储VS线性表的链式存储

线性表的顺序存储

http://www.coder4.com/archives/3036

1、线性表也可以用顺序表示实现,即用一组地址连续的存储单元依次存储线性表的数据元素。特点是ai和ai+1位于相邻的存储单元上,只要确定了存储线性表的起始位置,任意元素都可以随机存取。 阅读全文…

堆排序

堆排序就是对简单选择排序进行的一种改进。(调整堆的过程就是选择待排序序列中的最大值,本质和选择排序是一样的)。
记录的比较与交换是跳跃式进行,因此堆排序是一种不稳定的原地排序方法。
不适合待排序序列个数较少的情况。
在堆排序算法中,我们使用的是大顶堆,小顶堆通常在构造优先队列时使用。

堆结构
堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子的结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 阅读全文…

选择排序

基本思想:简单选择排序就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换值。
阅读全文…

MySQL由浅入深–更新ing

MySQL

Enjoy your Study Time!
版权@TracyLLing

希尔排序

希尔排序相当于直接插入排序的升级(分组插入排序),又称缩小增量排序,同属于插入排序类,不是稳定的排序算法。
比直接插入排序快的原因:

  1. 刚开始的时候间隔较大, 每个组里面的数据较少,排序很快
  2. 当分隔加大的时候, 每组的数据变多, 但是因为已经有了前面的工作,数据接近于有序, 所以也很快

基本思想:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下,效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。 阅读全文…

快速排序

基本快速排序

快速排序和冒泡排序同属交换排序,但是由于关键字的比较和交换是跳跃进行的,所以是不稳定的排序。

快速排序的基本思想:通过一趟排序讲待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对着两部分记录进行排序,以达到整个序列有序的目的。 阅读全文…

冒泡排序

初级版冒泡排序

冒泡排序算法为一种比较排序算法(还有快速排序),较小的数字如同气泡般慢慢浮到上面,所以称为冒泡排序。为就地排序,稳定。
算法思想:两两比较相邻记录的关键字,如果反序则交换,知道没有反序的记录为止。 阅读全文…

  • 标签云

  •  

    2012 年五月
    « 四    
     123456
    78910111213
    14151617181920
    21222324252627
    28293031  
  • 文章归档

  • 近期文章

  • WELCOME