プログラミングの為の数学と算数 vol.2
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
450:434 06/03/10 22:11:31 言い訳すると >>427 で >単純に0.5を足して切り捨てると除算結果が負数の場合に問題があるのです に騙されてしまった。 単純に0.5を足して切り捨てるのをやりたかったのだろう。 ただ、X86では除算の結果が負数になる場合は余りも負数になる。 a/b= n余りsなら a = n*b + s = s+b+(n-1)*b となる修正をすればいい アセンブラで書けば、 cdq idiv sqr edx,#31 add eax,edx と4命令 451:デフォルトの名無しさん 06/03/10 22:13:38 >>441は xが正でyが負のときおかしい。 かけ算はいってるけど int func(int a, int b){ int absa = (a >> 31) ^ a; return (a + absa*b + (b>>1)) / b - absa; } 452:434 06/03/10 22:18:43 >>451 そうだね。他に y=1の時も >>441は変になるだろう >>449なら大丈夫な筈だ 453:434 06/03/10 22:21:39 アセンブラの sqr は sarのタイプミスだ >>950 アセンブラだと4行なのに 使わないと除算とmodを別に計算するか div 関数を使う必要があるのが面倒な所 div関数だと結果も構造体渡しだからメモリアクセスが入って遅くなる
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5374日前に更新/259 KB
担当:undef