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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值