ページ 11

剰余計算の高速化

Posted: 2009年10月17日(土) 04:16
by ft
毎回剰余計算をしている箇所があるためその高速化について考えているのですが、どのようにすればいいでしょう?
対象の具体例を示しますと
void calc_ch(){
	ch.cnt++;
	ch.img=(ch.cnt%24)/6;
}
のようなものなどです。

Re:剰余計算の高速化

Posted: 2009年10月17日(土) 07:24
by toyo
2のn乗なら簡単なんですが
cnt % 8 == cnt & 7
cnt % 16 == cnt & 15
cnt % 32 == cnt & 31

Re:剰余計算の高速化

Posted: 2009年10月17日(土) 08:15
by たかぎ
ch.cntの更新をここでしか行っていないのであれば...
void calc_ch(){
	if (ch.cnt < 24 - 1)
           ++ch.cnt;
        else
            ch.cnt += 1 - 24;
	ch.img=ch.cnt/6;
}
上記のようにすることができるかと思います。

Re:剰余計算の高速化

Posted: 2009年10月18日(日) 00:11
by ft
ありがとうございます。
お二方の方法を使わせてもらいます!