IC基础知识(十七)verilog中有符号数的问题

本文通过一个Verilog代码示例解释了有符号数的运算规则,特别是补码表示法和位填充原则。内容包括:1. 有符号数采用补码形式;2. 当表达式中有无符号数时,整个运算按无符号处理;3. 仅当运算符右侧全为有符号数,系统才会自动补全位数;4. Verilog 2001中使用's'声明有符号数;5. $unsigned() 函数用于无符号类型转换,高位补0;6. $signed() 函数根据符号位进行扩展;7. 逻辑移位填充0,算术移位填充符号位。
摘要由CSDN通过智能技术生成

以下verilog代码中,a=12,b=10,则下列运算正确的是(D)

input [3:0] a;
input [3:0] b;
output signed [7:0] z;
wire signed  [3:0] c;
assign c = a[3:0]*b[3:0];
assign z =c;
选项:A. 8B. -120C 120D -8

解析:

    120 = 1111000(b),所以c = 4’b1000;

    对于不满一个字节的数据(8位),在计算时系统一般是补全,最高位为1,则补1,最高位为0,则补0。例如1000,系统默认补全是:1111 1000;如果是0100,补全为0000 0100;则z= 8’b11111000;

    补码的补码就是原码,那么对补码z求补码,也就是对1111 1000求补码,得到:1000 1000,有因为有符号数,最高位表示符号位,所以值为-8。

 

Rule Of Thumb

1、The format of the signed type is two’s complement. 有符号数均为补码表示

2、If any operand in an expression is unsigned the operation is considered

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值