Verilog基础知识(数值表示总结,signed,原码,反码,补码)

https://blog.csdn.net/maxwell2ic/article/details/80596210

 

定点数

原码表示

MSB是符号位,0表示正数,1表示负数。 
D=(−1)aB−1∑i=0B−2ai2i−B+1
D=(−1)aB−1∑i=0B−2ai2i−B+1

比如,二进制0.110=(−1)0∗(1∗2−1+1∗2−2)=+0.750.110=(−1)0∗(1∗2−1+1∗2−2)=+0.75,1.110=(−1)1∗(1∗2−1+1∗2−2)=−0.751.110=(−1)1∗(1∗2−1+1∗2−2)=−0.75 

反码表示(1’s complement)

正数的反码与原码相同,负数的反码是原码除符号位的所有位取反。

补码表示(2’s complement)

正数的原码、反码、补码相同;负数的补码等于反码加1,负数的原码与补码之间的相互转化关系均为除了符号位取反再加1。 


补码的好处在于加减运算不需要判断符号位。B-A=B+(-A),-A的补码是A的补码所有位取反再加1 


三种数制之间转换关系

正数原码、反码、补码相同; 
负数补码为原码除符号位取反加1; 
相反数数补码转换为所有位取反加1. 


verilog中的常量类型

 
 
verilog中常量编译为二进制,均为补码(整数与原码相同,负数为除符号为取反加1)

在verilog中声明端口或者信号时,默认是无符号数,

wire [7:0] number;
reg [7:0] number;
1
2
转换为十进制为 
D=∑i=0B−1ai2i
D=∑i=0B−1ai2i
如果需要指定为有符号数,需要特殊声明,则在硬件底层的二进制数均为补码形式

wire signed [7:0] number;
reg signed [7:0] number;
1
2
转换为十进制为 
D=∑i=0B−1ai2i−2B×aB−1
D=∑i=0B−1ai2i−2B×aB−1

在verilog2001中可以特别地用’s来声明符号数,比如-4表示成一个3bit十六进制数位-3’sh4。 
十进制的数永远都是有符号数.
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值