6

マイクロプロセッサに符号とゼロフラグの設定を実装したい。ifしたがって、またはforループを使用せずに数値が正、負、またはゼロであるかどうかを調べる関数を作成する必要があり、ブール演算子とビット単位の演算子のみが許可されます。私は次のことをしました。しかし、条件のためにそれを実装するにはどうすればzeroよいですか?

int status (int x) {
    int sign = (x >> 31);
    return sign;
}

助言がありますか ?

4

3 に答える 3

7

-1以下は、負の値、0ゼロ、1正の値のを返しますx

int status (int x) {
  int sign = (x > 0) - (x < 0); 
  return sign;
}
于 2013-05-24T05:16:22.443 に答える
0

これを試して

int status (unsigned no) {
  int sign = 0;

   // If Zero             // If -Ve = -1 OR If +Ve = -2
   (sign = ( no | 0 )) && ( sign = (~( ( (no << 1) >> 1 ) == no)) );

   // If +Ve
   (sign == -2) && (sign = 1);

  return sign;
}
于 2013-05-24T07:02:57.683 に答える