|
|
发表于 2006-9-8 12:59:54
|
显示全部楼层
不知道 "不能使用任何比较操作符" 的概念有多大, 暂时理解为不使用 >, <, ==, !=
下面是判断大于的函数, 类似的可写出其它几种操作
[PHP]
#include <stdio.h>
/* return 1 if a > b */
int greater(int a, int b)
{
int sa = a >> 31; /* sign of a */
int sb = b >> 31; /* sign of b */
if (!sa && sb) return 1; /* a >= 0 && b < 0 */
if (sa && !sb) return 0; /* a < 0 && b >= 0 */
int c = a - b;
if (!c) return 0; /* a == b */
int sc = c >> 31; /* sign of (a - b) */
return !sc;
}
int main(void)
{
#define N 13
int nums[N][2] = {
{1, 1},
{1, 0},
{1, -1},
{0, 1},
{0, 0},
{0, -1},
{-1, 1},
{-1, 0},
{-1, -1},
{1, 2},
{2, 1},
{-1, -2},
{-2, -1}
};
int i;
for (i = 0; i < N; i++) {
int a = nums[0];
int b = nums[1];
printf("%2d > %2d: %d\n", a, b, greater(a, b));
}
return 0;
}
[/PHP] |
|