← 2022 · ZEKU 笔试

推荐答案 测试一下

在Verilog中,"assign din[31:0]=32'hFF00_ABC4;assign dout[31:0]=(din<2)>4. dou的值是多少?

A 32'h00FF00AB B.32'hFFFF00AB C 32'h0x3FC02AF1 D.32'h0FC02AF1
单选题 中等 笔试真题单选

参考答案

题目中的表达式应为 `assign dout[31:0] = (din << 2) >> 4;`,其中 `din=32'hFF00_ABC4`。计算分为两步: 1. **左移2位**:`din << 2`。32'hFF00_ABC4 对应的二进制为 `1111 1111 0000 0000 1010 1011 1100 0100`。左移2位后,高位溢出丢弃,低位补0,得到 `1111 1100 0000 0010 1010 1111 0001 0000`,即 32'hFC02_AF10。 2. **右移4位**:对上一步结果 `32'hFC02_AF10` 执行逻辑右移4位。右移时高位补0,低位丢弃。二进制 `1111 1100 0000 0010 1010 1111 0001 0000` 右移4位得 `0000 1111 1100 0000 0010 1010 1111 0001`,即 32'h0FC0_2AF1。 因此,`dout` 的值为 32'h0FC0_2AF1。 **易错提示**: - 注意 `<<` 和 `>>` 操作符的优先级,但本题无歧义。 - 左移时高位丢弃,右移时高位补0(无符号数)。 - 十六进制与二进制的快速转换需熟练。 - 题目中 `din<2` 和 `>4` 应为移位符号 `<<2` 和 `>>4`,笔误需识别。

涉及知识点

  • Verilog移位操作(<<, >>)
  • 逻辑移位规则(无符号数)
  • 十六进制与二进制转换
  • 位宽与截断处理
  • 操作符优先级
← 上一题
登录后反馈错题
下一题 →