当前位置: 首页 > news >正文

逐位逼近法计算对数的小数部分

逐位逼近法(Bit-by-Bit Approximation)是一种通过 迭代和位操作 高效计算数学函数(如对数、平方根等)的方法。它特别适用于 不支持浮点运算的环境(如区块链智能合约),因为所有计算均通过 整数乘法、位移和比较完成。

本文只介绍其数学推导。

假设我们要计算\log_{2}1.2,显然其结果是小于1的,接下来我们来推导其结算过程。

假设0.b1b2b3b4=\log_{2}1.2,这里的0.b1b2b3b4是一个二进制的数字也就是说bn\epsilon [0,1]

两边同时乘以2得到b1.b2b3b4=\log_{2}1.2^{^{2}}
也就是说b1.b2b3b4=\log_{2}1.44

由于1.44<2^{_{1}} , 所以b1.b2b3b4<1,得出b1=0
继而得出0.b2b3b4=\log_{2}1.44
继续两边同时乘以2得出:b2.b3b4=\log_{2}1.44^{^{2}}=\log_{2}2.0736
2^{1}<2.0736所以b2.b3b4>1,得出b2=1
接下来1.b3b4=\log_{2}2.0736
也就是说2^{1.b3b4}=2.0736  ====>  2^{_{1+0.b3b4}}=2.0736  ,我们两边同时除以2得到2^{_{0.b3b4}}=1.0368

0.b3b4=\log_{2}1.0368
继续前面的步骤:
b3.b4=\log_{2}1.07495424 也就是说b3=0
接下来按照前面的计算b4也为0
也就是说\log_{2}1.2的结果约为二进制的0.01也就是十进制的0.25

相关文章:

  • SpringClound 微服务分布式Nacos学习笔记
  • Docker--Docker网络原理
  • day35图像处理OpenCV
  • Java面向对象的三大特性
  • ClickHouse 设计与细节
  • Python 设计模式:模板模式
  • 安宝特方案 | 医疗AR眼镜,重新定义远程会诊体验
  • Qt -对象树
  • CSS预处理器对比:Sass、Less与Stylus如何选择
  • 操作系统之shell实现(下)
  • Laravel 对接阿里云 OSS 说明文档
  • GPIO(通用输入输出端口)详细介绍
  • 【Qt】控件的理解 和 基础控件 QWidget 属性详解(通俗易懂+附源码+思维导图框架)
  • PyTorch卷积层填充(Padding)与步幅(Stride)详解及代码示例
  • 深入理解 Spring @Configuration 注解
  • PyTorch深度学习框架60天进阶学习计划 - 第48天:移动端模型优化(二)
  • 4.22tx视频后台开发一面
  • 【愚公系列】《Python网络爬虫从入门到精通》063-项目实战电商数据侦探(主窗体的数据展示)
  • 前端框架的“快闪“时代:我们该如何应对技术迭代的洪流?
  • 媒体关注:联易融聚焦AI+业务,重塑供应链金融生态
  • 2025年一季度上海市生产总值
  • 驯服象牙塔:美国政府对大学的战争是一场善恶对抗吗
  • 最高检发布知识产权检察白皮书,“知识产权检察厅”同日亮相
  • 新证据表明:地球水或为“自产”而非“外来”
  • “沉默”的智驾:余承东不喊“遥遥领先”,何小鹏连夜改口 | 电厂
  • 广汽全域赋能,领程皮卡概念车重磅登陆上海车展