【求教】负数的位移和除法运算问题

2019-03-26 16:31发布

在做压缩算法里的量化操作的目的为了生成更多的0,以便下一步的压缩操作,   但我发现当执行数值小的负数位移操作时,不管位移多少位,结果都是-1,比如-3>>6 = -1, 为了达到我的目的,我用如下操作代替: i = 1 <<6; -3/ i  =》 0; 这样就能得到0了。 但是换成这样的除法操作后,我量化代码的执行时间由(12852时钟)变成(428614 时钟),   请问 (1)为什么执行时间一下就变的这么大了呢? (2)除法操作难道这么费时间?底层汇编对除法操作是怎么操作的? (3)怎么样才能高效率的达到我量化的目的? [ 本帖最后由 breeze505 于 2012-6-18 14:06 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
wangfuchong
1楼-- · 2019-03-26 18:02
< (3)怎么样才能高效率的达到我量化的目的?
不知道您到底什么目的,什么叫量化操作?

-3/ i  =》 0;这一句什么意思?

3                00000011
-3              11111101
(-3)>>6     1111111b     -1d
breeze505
2楼-- · 2019-03-26 19:31
< 1.量化的目的是把权值小的数组元素尽量的归0
2.
比如-3>>6 = -1用操作
i = 1 <<6;
-3/ i  =》 0;代替;
上面意思是, i = 64,(即1<<6), 然后-3 / 64 是等于0(这是除法操作的结果)
,而采用位移操作-3>>6是等于-1,不能等0
3. 所以采用位移操作与我算法的目的不合,而采用除法操作CPU的执行效率很低,如何提高效率,这就是我所想问的问题
carrotchen
3楼-- · 2019-03-26 23:03
 精彩回答 2  元偷偷看……
breeze505
4楼-- · 2019-03-27 02:47
 精彩回答 2  元偷偷看……

一周热门 更多>