有⽆符号数乘法
移位与乘除法
左移n位等于原来的⼆进制数乘以2的n次⽅。
⽐如00011010⼗进制是26,左移两位后是01101000转成⼗进制是104恰好是26的4倍。
ps:这种倍数关系只适⽤于左移后被舍弃的⾼位不含1的情况,否则会溢出。
解决⽅式很简单,保证⾜够的位宽就⾏。
算术右移n位就是有符号位的除法,等于除2的n次⽅。
逻辑右移n位就是有符号位的除法,等于除2的n次⽅。
ps:这种倍数关系只适⽤于右移后被舍弃的低位不含1的情况,否则每舍⼀次1则代表余数被舍去,保留整数部分。
(针对这个还没想到好办法)从书中看到,这种误差是⽆解的。
⽤*乘法符号
//⽆符号乘法
wire[7:0]ubyte_a;
wire[7:0]ubyte_b;
wire[15:0]u_res;
assignu_res=ubyte_a*ubyte_b;
//有符号乘法
wiresigned[7:0]byte_a;
wiresigned[7:0]byte_b;
wiresigned[15:0]res;
assignres=byte_a*byte_b;
注:
输出的值和积的符号⽆关,有符号数和⽆符号数实际上是同⼀个数,由乘数决定。
如果表达式中有⼀个⽆符号数,则所有的操作数都会被强⾏转换为⽆符号数
这段详见
⽆符号数实现有符号乘法
1.符号位扩展
wire[7:0]ubyte_a;
wire[7:0]ubyte_b;
wire[15:0]res_manul;
res_manul<={{8{byte_a[7]}},ubyte_a}*{{8{ubyte_b[7]}},ubyte_b};
本文发布于:2023-03-05 11:34:28,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1677987268145444.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:乘法符号.doc
本文 PDF 下载地址:乘法符号.pdf
留言与评论(共有 0 条评论) |