定点数是计算机中采用的一种数的表示方法。参与运算的数的小数点位置固定不变。定点数又分为定点整数和定点小数。定点整数小数点位固定在最后一位之后称为定点整数。若机器字长为n+1位,数值表示为:
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、灵台网站维护、网站推广。
X=X0X1X2...Xn,其中Xi={0,1},0≤i≤n
即(-1)^X0
*
(X1*2^(n-1)
+
X2*2^(n-2)
+
...
+
Xn-1*2
+
Xn)
数值范围是
-(2^n-1)≤X≤2^n-1
例如:1111表示-7。定点小数小数点固定在最高位之后称为定点小数。若机器字长为n+1位,数值表示为:
X=X0.X1X2...Xn,其中Xi={0,1},0≤i≤n
(这里X0不表示数字,只表示符号,若X0=0,则代表X=0.X1X2...Xn,X0=1,则代表-0.X1X2...Xn)。即X=X0.X1X2...Xn代表的小数为
(-1)^X0
*
((X1*2^(-1))
+
X2*2^(-2)
+
...
+
Xn-1*2^(-n+1)
+
Xn*2^(-n))
数值范围是
-(1-2^(-n))≤X≤1-2^(-n)
例如:1111表示-0.875
先fseek到你想读取的那个位置,然后再读取,前提是你要有一定的的文件格式
而且如果你想记录大量信息的话,貌似应该用a+打开,而不是w+
定点数。常用的定点数有两种表示形式:
如果小数点位置约定在最低数值位的后面,则该数只能是定点整数;
如果小数点位置约定在最高数值位的前面,则该数只能是定点小数。
如果知道一个定点数的小数点位置约定和占用存储空间大小,那么很容易确定其表示数的范围。
C语言代码实现如下:
*********************************************************************
* 函数名称: BspDouToFix
* 功能描述: 将指定的浮点数 转化为 定点数
* 算法描述: 无
* 输入参数: ucType 0表示无符号 1表示有符号
* ucInteger 表示整数占几个bit
* ucdecimal 表示小数占几个bit
* dbDou 为待转化的浮点数
* 输出参数: 无
* 返 回 值: 转化后的定点数
*********************************************************************
VOID BspDouToFix(UCHAR ucType, UCHAR ucInteger, UCHAR ucdecimal, DOUBLE dbDou, UINT64 *pllfix)
{
UINT64 lltemp = 0;
DOUBLE dbtemp = 0;
dbtemp = dbDou;
if(dbtemp 0) /* 有符号正数 或者 无符号数 */
{
lltemp = (UINT64)(-dbDou*(1ucdecimal));
*pllfix = (UINT64)((UINT64)(1)(ucType + ucInteger + ucdecimal)) - lltemp;
}
else if(dbtemp 0) /* 有符号负数 */
{
*pllfix = (UINT64)(dbDou * (1ucdecimal));
}
else
{
*pllfix = 0;
}
}