打印
[MCU]

不管位移多少位,结果都是-1

[复制链接]
475|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiahy|  楼主 | 2019-8-4 18:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在做压缩算法里的量化操作的目的为了生成更多的0,以便下一步的压缩操作,

但我发现当执行数值小的负数位移操作时,不管位移多少位,结果都是-1

使用特权

评论回复

相关帖子

沙发
shimx| | 2019-8-4 18:47 | 只看该作者
这么奇怪?不过好像没看懂

使用特权

评论回复
板凳
jiahy|  楼主 | 2019-8-4 18:51 | 只看该作者
比如-3>>6 = -1,

使用特权

评论回复
地板
jiahy|  楼主 | 2019-8-4 18:53 | 只看该作者

为了达到我的目的,我用如下操作代替:
i = 1 <<6;
-3/ i  =》 0;
这样就能得到0了。

使用特权

评论回复
5
huangchui| | 2019-8-4 18:56 | 只看该作者

这不就行了吗

使用特权

评论回复
6
jiahy|  楼主 | 2019-8-4 19:00 | 只看该作者


但是换成这样的除法操作后,我量化代码的执行时间由(12852时钟)变成(428614 时钟)

使用特权

评论回复
7
spark周| | 2019-8-4 19:04 | 只看该作者

不懂,学习来了

使用特权

评论回复
8
jiahy|  楼主 | 2019-8-4 19:06 | 只看该作者
为什么执行时间一下就变的这么大了呢?

使用特权

评论回复
9
heweibig| | 2019-8-4 19:09 | 只看该作者
量化的目的是把权值小的数组元素尽量的归0

使用特权

评论回复
10
jiahy|  楼主 | 2019-8-4 19:12 | 只看该作者
除法操作难道这么费时间?底层汇编对除法操作是怎么操作的?

使用特权

评论回复
11
zhaoxqi| | 2019-8-4 19:16 | 只看该作者

比如-3>>6 = -1用操作
i = 1 <<6;
-3/ i =》 0;代替;
上面意思是, i = 64,(即1<<6), 然后-3 / 64 是等于0(这是除法操作的结果)
,而采用位移操作-3>>6是等于-1,不能等0

使用特权

评论回复
12
午夜粪车| | 2019-8-4 19:19 | 只看该作者
相对于加和乘,除法运算应该是比较耗时的,我印象好像是只有加和乘,除法是他们的变形

使用特权

评论回复
13
jiahy|  楼主 | 2019-8-4 19:23 | 只看该作者
唉,还是没有什么结果,算了,先结贴吧,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

862

主题

9861

帖子

4

粉丝