对数相关的辅助方法,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. 附录

Chisel3 - util - Math vs. CircuitMath的更多相关文章

  1. Java.util.Math类--数学相关的工具类

    Math类--数学相关的工具类 java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作. public static double abs(double ...

  2. Chisel3 - util - OneHot

    https://mp.weixin.qq.com/s/Jsy8P3m9W2EYKwneGVekiw   独热码相关的电路生成器.   参考链接: https://github.com/freechip ...

  3. Chisel3 - util - MixedVec

    https://mp.weixin.qq.com/s/mO648yx4_ZRedXSWX4Gj2g   可以容纳不同类型的变量的向量.   参考链接: https://github.com/freec ...

  4. Chisel3 - util - Mux

    https://mp.weixin.qq.com/s/TK1mHqvDpG9fbLJyNxJp-Q   Mux相关电路生成器.   参考链接: https://github.com/freechips ...

  5. Chisel3 - util - Lookup

    https://mp.weixin.qq.com/s/g85Si6n37D9PYfR5hEoRQQ     实现一个查找逻辑.   参考链接: https://github.com/freechips ...

  6. Chisel3 - util - Valid

    https://mp.weixin.qq.com/s/L5eAwv--WzZdr-CfW2-XNA   Chisel提供的Valid接口.如果valid为置1,则表明输出的bits有效:反之,则输出无 ...

  7. Chisel3 - util - LFSR16

    https://mp.weixin.qq.com/s/DSdb4tmRwDTOki7mbyuu9A     实现16位线性反馈移位寄存器.可用于生成简单的伪随机数.     ​​     ​​   参 ...

  8. Chisel3 - util - Bitwise

    https://mp.weixin.qq.com/s/MQzX1Ned35ztz0vusPdkdQ   比特相关的操作.   参考链接: https://github.com/freechipspro ...

  9. Chisel3 - util - BitPat

    https://mp.weixin.qq.com/s/80Q8j-OSMtgh5a92pI-MZA   使用value和mask来描述一个比特模式,即:value = bits & mask. ...

随机推荐

  1. print函数的全面认识

    # 输出打印 数字 print(123) a = 100 print(a) # 输出打印 字符串 print('字符串123') print('''锄禾日当午 汗滴禾下土''') # 输出打印 列表 ...

  2. STC8A8K64S4A12通过SPI接口操作基于ST7920的LCD12864液晶模块

    文章地址:https://www.cnblogs.com/jqdy/p/12665430.html 1. 硬件连接 1.1 64引脚的STC8A8K64S4A12 使用的是最小核心板,所以引脚皆引出可 ...

  3. 【Scala】什么是隐式转换?它又能用来干嘛?该怎么用

    文章目录 定义 隐式参数 隐式转换 隐式值:给方法提供参数 隐式视图 将Int和Double类型转换为String 狗狗学技能(使用别的类中的方法) 使用规则 定义 隐式参数 隐式参数指在函数或者方法 ...

  4. JDBC09 CLOB文本大对象

    CLOB(Character Large Object) -用于储存大量的文本数据 BLOB(Binary Large Object) -用于存储大量的二进制数据 -大字段有些特殊,不同数据处理的方式 ...

  5. 使用 python 进行 面部合成

    完整代码已上传至GitHub: https://github.com/chestnut-egg/Face 一. 准备工作 1. 此程序使用的是 Face++ 的API,所以需要去Face++官网注册账 ...

  6. js判断数组(数组对象)中是否存在指定的值,如果存在就删除

    数组中是否存在指定值,存在就删除 var str = ["a", "b", "c"]; var index = str.indexOf(&q ...

  7. git命令之切换分支

    Git一般有很多分支,我们clone到本地的一般都是master分支,如何进行分支的切换呢?那么下面带大家简单的看看如何通过命令来切换: 1.查看远程仓库及本地的所有分支 命令:git branch ...

  8. 00004-form 表单的清空、重置 (jquery)

    form 表单的清空.重置 $(':input').not(':button, :submit, :reset').val('').removeAttr('selected').removeAttr( ...

  9. 「雕爷学编程」Arduino动手做(40)——旋转编码器模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  10. js 前端向服务器端传送文件的常用请求方式

    在做项目的过程当中写到文件上传的功能,想着之前也是踩坑过来的,就在这里总结下自己常用的方法吧.我们现在一般都是通过ajax来搭起前后端数据交互的桥梁,但是大家在做到有文件需要上传的时候就会发现我们用a ...