概念辨析
《IC-二进制, 自然数, 有符号数》:https://mp.weixin.qq.com/s/9rGs9yN-OvLvEclnDZr87Q
两个结论:
1. 如果不把符号位编码编进二进制数里面,那么符号位就要单独考虑。保证被减数一定要大于减数,不然减出来的差(负数)无法表示。比如:在小学一二年级的时候,做减法必须保证被减数大于减数,如果反过来不够减,学生就不知道该怎么表示了。
2. 补码表示的一定是有符号数。
3. 无符号数是数的二进制表示形式,不牵涉到编码的概念。既不牵涉到补码,也不牵涉到原码。
参考链接
补码的编码方法有两个好处(鱼与熊掌):
- 把符号位编进数字中,无需单独处理符号位;
- 可以把符号位带入运算,无需单独处理符号位;
补码的减法可以转变为加法,降低了实现逻辑的难度。下面介绍二进制数补码形式的减法运算。
1.创建Sub.java, 并生成构造方法和logic()方法
略
2. 根据逻辑原理图,添加输入输出线
3. 在构造方法中搜集输入输出线并调用construct()方法
4. 在logic()方法中创建子节点并连线
这里把 a - b转换为 a + (-b)。-b 是 b 相反数。求相反数就是求二的补码形式。
这里使用Add来实现减法,但没有提供输入进位,所以使用0代替。
不考虑输出进位,所以输出到地。(无法转换为Verilog)
5. 创建inst静态方法方便后续使用
6. 创建main方法执行验证
运行结果为:
7. 生成Verilog
生成定制化模块名:
调用toVerilog()方法生成Verilog实现。
执行结果如下: