- 1 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 09:54:14 ]
- コンパイラ性能、コンパイルオプション、コードの最適化などについて語りましょう。
主に速度面の最適化を中心としますが、サイズなどの最適化もどうぞ。 なお、OS、CPU、コンパイラなどは限定しません 前スレ C、C++の最適化について語るスレ pc11.2ch.net/test/read.cgi/tech/1084676298/
- 780 名前:デフォルトの名無しさん [2008/06/17(火) 08:53:09 ]
- ビット演算だけで、剰余を求める方法を教えてください
- 781 名前:デフォルトの名無しさん [2008/06/17(火) 08:58:26 ]
-
646 名前:デフォルトの名無しさん[] 投稿日:2008/01/23(水) 21:06:35 割り算を掛け算とビットシフトに置き換える計算式求めるプログラムできた #include <iostream> using namespace std; main(){ unsigned int N,n,k; for(N=2; N<65000 ; N++){ for(n=0; (1<<n)<N ; n++); n+=15; double X=(pow(2,n)/N); unsigned int Y=(unsigned int)X; unsigned int d=0; if(X-Y<=Y+1-X)d=(unsigned int)(pow(2,n)- (N-1)*Y)-1; else Y++; printf("x /%5d = ( x * %5d + %5d ) >> %2d",N,Y,d,n); for(k=1; k<(1<<16) ; k++) if(k/N != ((k*Y+d)>>n))break; if(k==(1<<16))printf(" OK\n"); else printf(" ERR\n"); }} 647 名前:646[] 投稿日:2008/01/24(木) 15:42:18 64bit機か、内部で64bitまで計算結果を保持しているなら 32bitの割り算も出来るけど646は16bit同士です
- 782 名前:デフォルトの名無しさん [2008/06/17(火) 08:59:56 ]
- 2^n の剰余 とそれに近い数の剰余は簡単にも止まる。
- 783 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:37:14 ]
- 止めんなw
- 784 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:51:07 ]
- >>780
あらかじめ除数がわかってないと>>781は使えないよ。
|

|