游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3579|回复: 9

[求助]利用&代替%提高计算效率的问题

[复制链接]

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
发表于 2008-7-28 13:56:00 | 显示全部楼层 |阅读模式
看了个例子        int x = w % 8;
可以用int x = w & 7; 代替来提高计算效率

在草稿纸上列了一下

还是没能明白这是怎么得出来的

如果是%9 %10,还能够找到相应的用来&的数么?

还是只能是%(2的n次方)的数,然后替换成&(2的n次方再减1)的那个值?

望解答~ Thx~ [em1]

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2008-7-28 14:50:00 | 显示全部楼层

Re:[求助]利用&代替%提高计算效率的问题

这个例子不对,不能够用于负数的

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2008-7-28 15:53:00 | 显示全部楼层

Re: Re:[求助]利用&代替%提高计算效率的问题

psic: Re:[求助]利用&代替%提高计算效率的问题

这个例子不对,不能够用于负数的


负数?

我后面那个指的是2的n次方减1 [em7]

21

主题

125

帖子

135

积分

注册会员

Rank: 2

积分
135
QQ
发表于 2008-7-28 18:16:00 | 显示全部楼层

Re:[求助]利用&代替%提高计算效率的问题


只能是处理 2 的 n 次方的数.
原理就是:
比方说: 67 % 8

67 的二进制就是: 0100 0011
如果要求 8 的模, 那么就得到后面的四位, 那么就是 0011 . 要得到一个数的底四位就是 & 0x07
因为 0x07 二进制就是 1111.
这样求并集, 就得到我们想要的结果. 67 % 8 = 3



14

主题

77

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2008-7-28 18:27:00 | 显示全部楼层

Re:[求助]利用&代替%提高计算效率的问题

%会很慢吗?

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2008-7-28 18:57:00 | 显示全部楼层

Re: Re:[求助]利用&代替%提高计算效率的问题

greenlitchi: Re:[求助]利用&代替%提高计算效率的问题


只能是处理 2 的 n 次方的数.
原理就是:
比方说: 67 % 8

67 的二进制就是: 0100 0011
如果要求 8 的...


多谢!

解释得很清楚~~

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2008-7-28 18:58:00 | 显示全部楼层

Re: Re:[求助]利用&代替%提高计算效率的问题

核心: Re:[求助]利用&代替%提高计算效率的问题

%会很慢吗?


应该不会吧

这么做只是一种优化的方法而已

16

主题

88

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2008-8-11 16:44:00 | 显示全部楼层

Re:[求助]利用&代替%提高计算效率的问题

优化应该集中力量在算法上,而不是这些。

17

主题

282

帖子

436

积分

中级会员

Rank: 3Rank: 3

积分
436
 楼主| 发表于 2008-8-11 22:17:00 | 显示全部楼层

Re: Re:[求助]利用&代替%提高计算效率的问题

db123: Re:[求助]利用&代替%提高计算效率的问题

优化应该集中力量在算法上,而不是这些。


恩 我是为了学习 不是为了优化呵呵

5

主题

41

帖子

169

积分

注册会员

Rank: 2

积分
169
发表于 2010-2-28 08:40:00 | 显示全部楼层

Re: Re:[求助]利用&代替%提高计算效率的问题

db123: Re:[求助]利用&代替%提高计算效率的问题

优化应该集中力量在算法上,而不是这些。


相当于除法操作,尤其在arm处理器上除法是用软件来实现的,这个还是影响很大的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-12 18:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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