智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2189|回复: 12
打印 上一主题 下一主题

xs128 16位乘法运算 为什么会出错??

[复制链接]

18

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
948
威望
525
贡献
245
兑换币
246
注册时间
2012-5-17
在线时间
89 小时
跳转到指定楼层
1#
发表于 2013-3-9 20:47:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1600 * 2500  = 4000000;

存放在一个变量名为b的 long 型变量中,但调试时 看到的确是 b = 2304;

13

主题

168

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1533
威望
774
贡献
427
兑换币
469
注册时间
2012-10-17
在线时间
166 小时
2#
发表于 2013-3-9 21:43:23 | 只看该作者
顶一个!求大神啊!
回复 支持 反对

使用道具 举报

4

主题

34

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1175
威望
576
贡献
355
兑换币
276
注册时间
2012-4-15
在线时间
122 小时
3#
发表于 2013-3-9 21:49:02 | 只看该作者
我的队友也碰到了类似的问题 但是我用的是K60无压力
回复 支持 反对

使用道具 举报

36

主题

1837

帖子

3

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6375
威望
3368
贡献
1847
兑换币
2326
注册时间
2013-2-3
在线时间
580 小时
4#
发表于 2013-3-9 22:35:06 | 只看该作者
这个要看具体代码,你贴一段吧。
回复 支持 反对

使用道具 举报

18

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
948
威望
525
贡献
245
兑换币
246
注册时间
2012-5-17
在线时间
89 小时
5#
 楼主| 发表于 2013-3-9 22:51:11 | 只看该作者
灰原姐姐 发表于 2013-3-9 22:35
这个要看具体代码,你贴一段吧。

不是啊 就是很简单的 .  int a=0,b=0;   long c=0;    a=1600; b=2500;  c= a*b;
调试的时候,观察就是 不对。

用的是 codewarrior v5.1 ,我在想是不是需要设置什么??



回复 支持 反对

使用道具 举报

36

主题

1837

帖子

3

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6375
威望
3368
贡献
1847
兑换币
2326
注册时间
2013-2-3
在线时间
580 小时
6#
发表于 2013-3-10 09:25:05 | 只看该作者
(1600)10 * (2500)10 = (4000000)10 = (1111010000100100000000)2
而此处 int 变量是 2 字节的,故 (111101 00001001 00000000)2 高6位溢出得
(00001001 00000000)2 = 2304
回复 支持 反对

使用道具 举报

13

主题

168

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1533
威望
774
贡献
427
兑换币
469
注册时间
2012-10-17
在线时间
166 小时
7#
发表于 2013-3-10 11:01:54 | 只看该作者
灰原姐姐 发表于 2013-3-10 09:25
(1600)10 * (2500)10 = (4000000)10 = (1111010000100100000000)2
而此处 int 变量是 2 字节的,故 (11110 ...

灰原姐姐~么么~~
回复 支持 反对

使用道具 举报

4

主题

34

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1175
威望
576
贡献
355
兑换币
276
注册时间
2012-4-15
在线时间
122 小时
8#
发表于 2013-3-10 11:02:05 | 只看该作者
灰原姐姐 发表于 2013-3-10 09:25
(1600)10 * (2500)10 = (4000000)10 = (1111010000100100000000)2
而此处 int 变量是 2 字节的,故 (11110 ...

确实是溢出了 那如果要用xs的芯片计算这种数据,有什么好办法吗
回复 支持 反对

使用道具 举报

18

主题

48

帖子

0

精华

高级会员

Rank: 4

积分
948
威望
525
贡献
245
兑换币
246
注册时间
2012-5-17
在线时间
89 小时
9#
 楼主| 发表于 2013-3-10 12:44:35 | 只看该作者
灰原姐姐 发表于 2013-3-10 09:25
(1600)10 * (2500)10 = (4000000)10 = (1111010000100100000000)2
而此处 int 变量是 2 字节的,故 (11110 ...

那难道 xs不能进行16位乘法运算么? 51 都可以的吧。  没有解决方法么??很苦恼啊
回复 支持 反对

使用道具 举报

5

主题

394

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2352
威望
1312
贡献
562
兑换币
356
注册时间
2012-9-16
在线时间
239 小时
10#
发表于 2013-3-10 13:22:15 | 只看该作者
灰原姐姐 发表于 2013-3-10 09:25
(1600)10 * (2500)10 = (4000000)10 = (1111010000100100000000)2
而此处 int 变量是 2 字节的,故 (11110 ...

灰原厉害
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-11 21:59 , Processed in 0.074387 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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