OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2436|回复: 2

求解:乘除法后数值的二进制符号位丢失

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-3-6
在线时间
4 小时
发表于 2020-3-26 23:58:29 | 显示全部楼层 |阅读模式
硬件:STM32F103C8
问题:乘除法运算后,所得值的符号位出现问题。
例如:
int A,B,Measure;
Measure = (A+B)/2;
本该得到-26,但得到了32742,对比两个二进制补码,发现仅符号位不同。
同样,对于目标值34,却得到了-32734,也是符号位出现问题。

求助各位大佬们!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2018-12-21
在线时间
126 小时
发表于 2020-3-27 09:58:57 | 显示全部楼层
很简单,汇编器翻译指令的时候,把ASR Rx,#0x01翻译成了LSR Rx,#0x01,所以符号位不见了呗。
不过我感觉是你遇到的问题总是那么奇怪,这种简单的算术运算怎么可能翻译错误。
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2016-8-8
在线时间
10 小时
发表于 2020-3-27 17:27:54 | 显示全部楼层
赋值A、B都赋的啥值,有符号数需要判断越界吧。  32742 取反加1 就是-26啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 02:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表