当前位置: 首页 > backend >正文

76.有符号数累加运算

有符号数负数补码相加时,全部位都参与运算,包括符号位,当相加和超出定义位宽时自动丢掉高位。

出现问题原因分析:

虽然输入数据HIdata_wire[32*(DEVMUM/2)-1:0]定义为有符号数,但其内部不是一个数据,相当于串行数据存储器,因此会将其整体看成一个有符号数,当累加时取出的数据依然是按默认无符号来对待,导致数据出错。(按无符号数相加了)

-2的补码:2^32-2=4294967296-2=4294967294

-4的补码:2^32-4=4294967292

4294967294 + 4294967292=8,589,934,586

解决办法:

累加前进行强制类型转换为有符号数

计算结果正确。

注意:当数据被认为是无符号数时,补码所有位直接相加,也就是按正数相加。

         当被认为是负数时,会自动匹配出符合数值的数据位宽,然后相加求和舍弃后再进行符号              位的扩展。(扩展的符号位不参与运算)。自己解释的

         VHDL强制类型转换为 TO_SIGNED(-5,8)。

http://www.xdnf.cn/news/7198.html

相关文章:

  • c++进阶——位图、布隆过滤器
  • 菜鸟之路Day32一一多表查询,事物,索引
  • 【Linux网络】五种IO模型与阻塞IO
  • 多模态信息提取:打通数据价值的“最后一公里”
  • Linux进程信号(二)之信号产生1
  • 【Linux】第二十章 管理基本存储
  • Redis进阶知识
  • 数据库blog2_数据结构与效率
  • 选择之困:如何挑选合适的 Python 环境与工具——以 Google Colaboratory 为例
  • 0-1背包问题(求最优值和构造最优解)
  • 苍穹外卖--修改菜品
  • C++中的四种强制转换
  • web中路径问题
  • Leetcode134加油站
  • u深度学习 神经网络图像数据的预处理全解
  • RDD-数据清洗
  • 02 Nginx虚拟主机
  • 【Linux】第十七章 归档和传输文件
  • 为什么el-select组件在下拉选择后无法赋值
  • 机器学习西瓜书
  • 我的电赛(简易的波形发生器大一暑假回顾)
  • 字节跳动开源通用图像定制模型DreamO,支持风格转换、换衣、身份定制、多条件组合等多种功能~
  • 【android bluetooth 协议分析 01】【HCI 层介绍 4】【LeSetEventMask命令介绍】
  • 【C语言】字符串函数及其部分模拟实现
  • JavaScript:元宇宙角色动作与移动
  • 6.2.5图的基本操作
  • TYUT-企业级开发教程-第二章
  • 学习STC51单片机05(芯片为STC89C52RC)
  • 发布时将多个bpl 打包成一个bpl的方法,或者说:不需要vcl60.bpl情况下 18.5K的exe 照常可以运行。
  • deepseek系列论文汇总(时至2025.5)