计组上机1/2 ALU:浮点数与二进制转换 CRC循环冗余校验

programming-01 *浮点数与二进制转换

1、十进制与二进制互转:注意分正负数!!!!

  • Integer.toBinaryString(-235465)对负数会自动生成32位补码
  • 对&操作还是不太了解,避免使用
  • 二进制转十进制时,对于负数的补码,可以把+1移到后面,少一步加法在这里插入图片描述
    2、十进制与NBCD互转:1100为正,1101为负!!!!同样区分正负数
  • 知道符号后剩下的部分无关正负,一个一个取变成4位的Binary
  • 不满32位时在符号位和数值位中间补0000
  • 转成十进制时注意去掉多余的0在这里插入图片描述
    3、浮点数和二进制真值互转:我原来的代码分了有科学记数法和无科学记数法,感觉有问题,这里学习标答写法。
  • List item
  • 准备阶段:处理NaN,正负无穷,0
    在这里插入图片描述
  • 通过最小规格化数分类讨论:
  • 若是非规格化数,指数部分全0,剩余数放大2^126再用小数化二进制的方法得阶码
  • 若是规格化数,需要移动的位数即为exponent,再算出指数(exponent+bias)并更新d,最后再用小数化二进制的方法得阶码
  • 注意把小数转成二进制时不要单纯的只留23位,要多留几位保证精度(非规格化可能会左移)
    在这里插入图片描述
    二进制转浮点数则简单不少:
    在这里插入图片描述
    在这里插入图片描述

对上面问题的标答补充:(不用toBinaryString的方法)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
模拟加法器

programming-02 *CRC循环冗余校验

在这里插入图片描述
在这里插入图片描述
生成多项式的最高位是几,就左移几位,这里是3

  • 生成校验码:先左移,再除以多项式,难点在于除法的实现

在这里插入图片描述
重难点在:
0可以省略,不一定要专门设一个result的string(因为只要余数),异或操作
在这里插入图片描述
我的方法:没必要递归让代码复杂了,这个方法就是省略掉0然后一步步算,如果剩下的数位数少了,就得余数并跳出(newRes存的是最后的余数)。
在这里插入图片描述
这里显然可以共用算余数的函数,所以比较简单。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值