博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Chisel3 - util - Math vs. CircuitMath
阅读量:6187 次
发布时间:2019-06-21

本文共 694 字,大约阅读时间需要 2 分钟。

 
 
对数相关的辅助方法,Math通过软件方法实现,CircuitMath通过硬件方法实现。
 
参考链接:
 
 
1. Math
 
1) log2Up
 
log2Ceil,建议使用log2Ceil。
 
2) log2Ceil
 
求对数,向上取整。
 
 
一方面:
1位二进制无符号数,表示的数值范围:0, 1
2位二进制无符号数,增加的数值范围:2, 3
3位二进制无符号数,增加的数值范围:4, 5, 6, 7, 即:2^(3-1) .. 2^3 - 1
...
n位二进制无符号数,增加的数值范围:2^(n-1) .. 2^n - 1
 
即是bitLength每增加1,增加的数值范围;
 
另一方面:
若log2(N)向上取整为n,则N的数值范围为:2^(n-1) + 1 .. 2^n;
则N-1的数值范围为:2^(n-1) .. 2^n - 1,这正是n位二进制无符号数所增加的数值范围;
 
所以:
(N-1).bitLength = n;
 
仅供理解,并非严谨证明。姑妄观之。
 
3) log2Down
 
log2Floor,建议使用log2Floor。
 
4) log2Floor
 
求2的对数,向下取整。
基于log2Ceil,把向上取整加的1减掉。如果没有加1,也就不需要减了。
 
5) isPow2
 
判断一个数字是否2的指数幂。
 
 
2. CircuitMath
 
生成一个计算某个数的2的对数值的电路。小数部分舍弃掉。
 
 
1) Log2
 
使用分治策略,若高位的一半有比特置1,则使用高位的一半进行后续计算。
 
3. 附录

转载于:https://www.cnblogs.com/wjcdx/p/10167517.html

你可能感兴趣的文章
Mac上搭建Xcode9.0+appium1.6.5过程及链接模拟器测试app
查看>>
centos7配置haproxy
查看>>
MongoDB 3.0(1):CentOS7 安装MongoDB 3.0服务
查看>>
Android开发者指南(20) —— Testing
查看>>
Linux多线程实践(4) --线程特定数据
查看>>
guardian keytab生成不了
查看>>
08:特殊日历计算
查看>>
mongodb数据结构学习1--增删改查
查看>>
android中文api(80)——Gallery.LayoutParams
查看>>
Windows Embedded Compact 7加速生活化IT产品创新
查看>>
安装LSMS前需关闭MediaSense
查看>>
QTP引用外部脚本路径的设定(三)Instr函数的使用
查看>>
Linux 监控工具之Cacti使用详解(四)
查看>>
机房管理系列之共享打印服务器
查看>>
ORACLE_OCM.MGMT_DB_LL_METRICS报错
查看>>
文件服务器的配置与管理(3) 共享文件夹的创建与使用
查看>>
Windows快捷方式
查看>>
Essential Linux Device Driver附录A . Linux汇编
查看>>
eclipse导入的工程莫名报错误
查看>>
[Android]基于RxJava、RxAndroid的EventBus实现
查看>>