【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
■ このスレッドは過去ログ倉庫に格納されています
0035デフォルトの名無しさん
2006/10/07(土) 11:00:48その整数型には次の演算が行えるなら
・加減算
・乗算
・n倍できる高速な演算(シフト演算)
・等号、大なり、小なり
a/bの余りは、
for(;;){
for(d=0.i=1;1;i++){ if(a<b.leftshift(i)){ d=i-1; break; } } //シフトして初めてaを超えるシフト数dを得る←ここが一番呼ばれる
c=b.leftshift(d);for(;a>c;a-=c); //bをdだけシフトしたcをaから引いていく
if(d==0) break; //もうシフトしてaを超えない最大のdを見つける必要はないので、抜ける
}
で、余りはきっとa
これでもかなり遅いがなぁ…加減算でやったら死ぬと思うが
■ このスレッドは過去ログ倉庫に格納されています