摘要:
定点数的表示所有的定点数学实际上是以整数尺度为基础的。比如,我们想用一个整数来表示10.5。这做不到,因为没有小数位。你可以将其截断为10.0或将其舍入为11.0,但10.5不是一个整数。但如果你将10.5放大10倍,10.5就变成了105.0,这是一个整数。这便是定点数的基础。你可以采用某一比例系数来对数值进行缩放,并在进行数学计算时将比例系数考虑进去。由于计算机是二进制的,大部分游戏程序倾向于使用32位整数(或int),以16.16的格式来表示定点数。你可以将整数部分放在高16位,小数部分置于低16位。这样你已将整个数值放大为原来的2^16即65536倍。另外,为提取出一个定点数的整数部分 阅读全文
随笔档案-2012年07月
位操作实现加减乘除
2012-07-13 17:46 by 彭白洋, 338 阅读, 收藏,
摘要:
1 // Bit Operation Implements Add, Submit, Multiply, Divide 2 // Use only Integer with little length 3 4 #include <iostream> 5 using namespace std; 6 7 // add 8 int add( int a, int b ){ 9 int c; 10 while( c = (a&b) ){ 11 a = (a^b); 12 b = (c<<1); 13 } 14 return (a^b); 15... 阅读全文
关于内存地址对齐
2012-07-12 15:33 by 彭白洋, 830 阅读, 收藏,
摘要:
内存地址对齐,是一种在计算机内存中排列数据、访问数据的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐。当今的计算机在计算机内存中读写数据时都是按字(word)大小块来进行操作的(在32位系统中,数据总线宽度为32,每次能读取4字节,地址总线宽度为32,因此最大的寻址空间为2^32=4GB,但是最低2位A[0],A[1]是不用于寻址,A[2-31]才能存储器相连,因此只能访问4的倍数地址空间,但是总的寻址空间还是2^30*字长=4GB,因此在内存中所有存放的基本类型数据的首地址的最低两位都是0,除结构体中的成员变量)。基本类型数据对齐就是数据在内存中的偏移地址必须.. 阅读全文
浙公网安备 33010602011771号