迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1812|回复: 3

【提问】迪文k600+数据变量显示负数问题

[复制链接]

1

主题

1

回帖

24

积分

新手上路

Rank: 1

积分
24
发表于 2020-6-16 18:00:25 | 显示全部楼层 |阅读模式
假如定义长整形4字节,起始地址0x0300。  怎么送值使他显示正确负值。
我arm内定义int32_t a = (int32_t)(-21.1234f)  0x300 送入 a/65536  0x301 送入a%65536 为撒显示的不是-21.1234
回复

使用道具 举报

0

主题

125

回帖

2081

积分

金牌会员

Rank: 6Rank: 6

积分
2081
发表于 2020-6-16 20:02:18 | 显示全部楼层
负数显示的计算方式就是正数的补码+1
比如,长整型你要显示-21.1234
那么就是  FFFF FFFF-0003 3922=FFFC C6DD(正数的补码)+1=‭FFFC C6DE‬
‭FFFC C6DE‬=-21.1234
回复

使用道具 举报

1

主题

1

回帖

24

积分

新手上路

Rank: 1

积分
24
 楼主| 发表于 2020-6-17 11:15:17 | 显示全部楼层
   tmp5 = tmp2 -tmp5*tmp4;   //实际计算tmp5 = -22.5714;
       //Range_Cruve_UN.RangeCruveParam.H  = (int32_t)(tmp5*-10000.0f);       用这行代码跑 显示正数 22.5714,是对的
    if(tmp5 < 0.0f){
         Range_Cruve_UN.RangeCruveParam.H  = (int32_t)(tmp5*-10000.0f);
         Range_Cruve_UN.RangeCruveParam.H  = 0xFFFFFFFF - Range_Cruve_UN.RangeCruveParam.H +1;  用这样跑显示-16.多
      }
      else {
         Range_Cruve_UN.RangeCruveParam.H  = (int32_t)(tmp5*10000.0f);
      }
回复

使用道具 举报

0

主题

33

回帖

1195

积分

金牌会员

Rank: 6Rank: 6

积分
1195
发表于 2020-6-17 14:15:04 | 显示全部楼层
您好,您这边屏的控件是怎样设置的?然后发送到屏的指令怎样的?
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-23 06:45 , Processed in 0.071415 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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