IC设计中的有无符号数计算
1.两个输入是有符号数,结果自动为有符号数。
2.一个有符号数和一个无符号数运算,运算数自动按照无符号数补位。
3.为防止溢出,中间结果存储寄存器的位宽要足够大。
4.有符号数赋值给无符号数,按照有符号数补位。
5.无符号数赋值给有符号数,按照无符号数补位。
6.将低位宽数经左右移后赋值给高位宽的数,其在运算时,会先根据有无符号的情况将位宽补齐后,再进行左右移。
7.逻辑右移 >> ,算术右移>>>,强制转换$signed()。
补:
8.有符号负数,获取绝对值,带符号取反再加1,高位不需要去,因为要考虑最小负数情况。
9.无符号数和有符号数运算,可以手动对算数进行补位,避免出错。
10.m位无符号数,和n位有符号数相乘,结果为(m+n-1)+1位,括号内是绝对值乘积占用位数。
11.如果输入是无符号数,即没有符号位,那就不能按照最高位进行部位,而是补0.
总结来说,有符号数和无符号数的区别,在于计算时的补位问题,所有数值都是按照有符号数在存储。