マイクロプロセッサに符号とゼロフラグの設定を実装したい。if
したがって、またはfor
ループを使用せずに数値が正、負、またはゼロであるかどうかを調べる関数を作成する必要があり、ブール演算子とビット単位の演算子のみが許可されます。私は次のことをしました。しかし、条件のためにそれを実装するにはどうすればzero
よいですか?
int status (int x) {
int sign = (x >> 31);
return sign;
}
助言がありますか ?
-1
以下は、負の値、0
ゼロ、1
正の値のを返しますx
。
int status (int x) {
int sign = (x > 0) - (x < 0);
return sign;
}
これを試して
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;
}