定点数的实现

定点数实现的是float转PEint
  /// 浮点数有很多问题 多个平台一些运算结果不一致 
  /// 定点数 运算 (把浮点数转为定点数进行运算,保证所有平台结果的一致性)
  //因为要把float转化为整形来操作 
  //float是一个结构体 所以我们这里也是声明的一个结构体(v3转PEv3也是结构体)

具体功能:

1.构造函数和显示转换(float转PEInt)、隐式转换(int转PEInt)

代码:

使用:

2.运算符重载:特别注意乘除和取反,右移

3.定点数的转化为原始(float or int)数据、Tostring和equal方法的重写

1.负数的移位预算问题

原理:负数右移运算的结果就是其原码取反得到反码,反码再加一。

上述代码模拟了护盾的效果,整数部分不相同(原始整数是通过右移得到的,而正数和负数的右移结果是不同的,也就是上述结果差1(不考虑符号的话)),需要对负数进行处理(对于负数:修改了Sourceint, *, >> :加上了对于负数的判断,把负数取反当成正数来处理)。

基于定点数实现的PEv3

PEcal:一些计算和钳制函数

结果公式

牛顿迭代求开方的代码:

钳制

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值