Verilog|数据类型中的有符号和无符…
2015-09-25 11:02
120 查看
最近被Verilog中的有符号和无符号迷惑了一下,终于有点眉目了,赶紧写下来。
首先记住,有符号数的运算全都是补码的方式。
下面看3个例子:
-------------------------------------------------------------
reg [7:0] temp1,
temp2, temp3, temp4, temp5, temp6 ;
temp1 = 8'd18;
temp2 = -8'd18;
temp3 = 8'sd18;
temp4 = -12/3;
temp5 =
-8'd12/3;
temp6 =
-8'sd12/3;
-------------------------------------------------------------
以下是仿真的结果;
先看前3个
8'd18表示输入的是无符号的十进制数18
-8'd18表示输入的是-18,所以结果为11101110
8'sd18表示输入的是有符号的18
再看后3个
-12/3
的结果为-4的补码
-8'd12/3 的结果比较奇怪,因为-8'sd12可以分解为
-(8'd12)/3,就是11110100/3,结果为01010001
-8'sd12/3的结果为-4的补码
这里可以看出,加上了s后,在运算的时候编译器把数当作有符号数计算,不加s时,即使是补码的负数,也会直接当作无符号数处理。
首先记住,有符号数的运算全都是补码的方式。
下面看3个例子:
-------------------------------------------------------------
reg [7:0] temp1,
temp2, temp3, temp4, temp5, temp6 ;
temp1 = 8'd18;
temp2 = -8'd18;
temp3 = 8'sd18;
temp4 = -12/3;
temp5 =
-8'd12/3;
temp6 =
-8'sd12/3;
-------------------------------------------------------------
以下是仿真的结果;
先看前3个
8'd18表示输入的是无符号的十进制数18
-8'd18表示输入的是-18,所以结果为11101110
8'sd18表示输入的是有符号的18
再看后3个
-12/3
的结果为-4的补码
-8'd12/3 的结果比较奇怪,因为-8'sd12可以分解为
-(8'd12)/3,就是11110100/3,结果为01010001
-8'sd12/3的结果为-4的补码
这里可以看出,加上了s后,在运算的时候编译器把数当作有符号数计算,不加s时,即使是补码的负数,也会直接当作无符号数处理。
相关文章推荐
- CDMA中的3个码
- 小米的450亿美元估值
- PAT:05-1. List Components (25),Go语言解答
- 导频序列和训练序列
- PAT: Root of AVL Tree (25),Go语言
- 信噪比:SNR,Es/No,Eb/No的理解
- HDU 5423 Rikka with Tree(bfs or dfs)——BestCoder Round #53(div.1 div.2)
- 关于SNR和EbN0
- Python-Jenkins 查询job是否存在
- 插入并排序
- 几个经常用到的字符串的截取
- 20岁拼体力,30岁拼专业,40岁拼人脉
- android手势事件传递(实例:下拉刷新)
- Android实战简易教程<十三>(五大布局研究)
- android 电容屏(一):电容屏基本原理篇
- PAT:03-2. List Leaves,Go语言解答
- PAT:二分法求多项式单根
- PAT:一元多项式求导
- PAT:Reversing Linked List
- GoLang基本配置