OpenEdv-开源电子网

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

如何在Keil中实现二进制运算

[复制链接]

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2019-3-24
在线时间
10 小时
发表于 2019-6-8 20:40:13 | 显示全部楼层 |阅读模式
5金钱
使用Keil4.7编程,在运算中用到一行代码:lX  = (lBufOutArray[i] << 16) >> 16,这里的lBufOutArray[]是我自己定义的一个float数组;但是系统显示Keil显示error:invalid oprands to binary expression;也就是说Keil无法对float数组进行二进制运算;但是我又不得不用到这种运算,请问该怎么解决?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2019-3-24
在线时间
10 小时
 楼主| 发表于 2019-6-8 21:05:26 | 显示全部楼层
请问会不会是要增加一些定义?如果要增加,应该增加什么呢?
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2019-6-8 22:03:08 | 显示全部楼层
浮点型类型有自己的存储规范,直接移位操作不可取
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2019-3-24
在线时间
10 小时
 楼主| 发表于 2019-6-8 22:17:30 | 显示全部楼层
DongInker 发表于 2019-6-8 22:03
浮点型类型有自己的存储规范,直接移位操作不可取

那么请问应该怎样进行二进制操作呢?比如说改变数组类型?
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
发表于 2019-6-8 22:24:15 | 显示全部楼层
本帖最后由 mack13013 于 2019-6-8 22:25 编辑
wtctx 发表于 2019-6-8 22:17
那么请问应该怎样进行二进制操作呢?比如说改变数组类型?

强制转换成整形试试,比如 lX  = (这里可能需要再进行一次强制转换,转换成跟IX匹配的类型)((((int)lBufOutArray) << 16) >> 16);
回复

使用道具 举报

2

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2019-4-24
在线时间
78 小时
发表于 2019-6-9 07:20:51 来自手机 | 显示全部楼层
能不能将浮点放大,再转换成整形,这样就可以进行你的运算了。例如1234.56789看你保留几位小数了,假设3位放大1000倍并转换为整形,成为1234567。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-6-9 07:54:58 | 显示全部楼层
本帖最后由 edmund1234 于 2019-6-9 08:00 编辑

首先你要先搞清楚
float ff=1.23f;
强行把它转换后进行移位<<16后, 它绝对不会等于1.23*2^16
不信你自己试试, 这样就可以通过编译
lX  = ((u32)lBufOutArray << 16) >> 16;

你还是把你要移位的目的说出来, 自然会有人给你想办法


回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2019-6-9 22:34:43 | 显示全部楼层
edmund1234 发表于 2019-6-9 07:54
首先你要先搞清楚
float ff=1.23f;
强行把它转换后进行移位


没错他的方向肯定是错了,只能说你为什么要这样移位处理这个数据
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 08:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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