导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]无符号乘法运算的问题[liufengzhong]

 *第48031篇: [转帖]无符号乘法运算的问题

  
楼 主:liufengzhong 2014年8月30日20:04
 [转帖]无符号乘法运算的问题
我修改  app_simple_avb_demo 为了做一些来样加工的终点。我目前做这个的  media_output_fifo_to_xc_channel_split_lr 方法,包含在  media_output_fifo_support.xc 单位。我所要做的是缩小了,从信道接收(为无符号整数)的音频采样。看来,浮点数是XC因此无法实现的方式是整数乘法,其次是整数除法。当我做乘法的无符号整数,它会导致过大的,意想不到的结果。

对此有何建议?我将发布的示例代码显示这个乘法的一个例子的结果的截图。

谢谢,

米奇

附件:


回答:

听起来基本上是像你想设定一个音量控制? 

听起来你可能想使用Mac电脑...

{h, l} = macs(mult, sample, 0, 0);


回复:

这不就是造成问题的溢出,也有一些是在实际的乘法过程脚麻。下面是简单的一段代码,它描述了几个测试的情况下,有结果。这工作正常,在一个简单的程序,但并不表现在XMOS AVB执行方面是相同的。

signed int i1,i2,i3;
unsigned u1,u2,u3;
u1 = 0;
u2 = 0;
u3 = 0;
i1 = (40 * 10); //400
u1 = (unsigned)i1; //912
i2 = (50*10); //500
u2 = (unsigned)i2; //1012
i3 = (60*10); //600
u3 = (unsigned)i3; //1240

米奇


回答2:

这是在调试器中的一个错误。我会在内部文件中的问题。如果您执行下列操作代替了printf(“A”):

printintln(TEST1);
printintln(TEST2);

然后你会发现,该值都正确。编译器通常会优化代码走,因为你不使用的test1或test2的任何下面的语句有可能不会与这两个源行相关的任何代码。调试器应该说,它无法找到变量,如果它已被优化掉了,不只是给一个不正确的值。

回复2:

我尝试添加两个printintln(...)和printf的(......),仍然有同样的结果。如果我将这些变量添加到观察名单,他们有相同的值,因为他们在做我的回答上述的评论


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[转帖]如何在xk1A擦除SPI快闪记忆体?

[下一篇主题]:[转帖]每个核心使用多少内存?