Cにはsign関数があります:
int sign(int x)
{
if(x > 0) return 1;
if(x < 0) return -1;
return 0;
}
残念ながら、比較コストが非常に高いため、比較の数を減らすために関数を変更する必要があります。
私は次のことを試しました:
int sign(int x)
{
int result;
result = (-1)*(((unsigned int)x)>>31);
if (x > 0) return 1;
return result;
}
この場合、比較結果は 1 つだけです。
比較をまったく回避する方法はありますか?
すべての回答が C++ である、比較を使用する (回避するはずだった)、または, , を返さないため、重複の可能性があるEDITは質問に対する回答を提供しません。-1
+1
0