一个关于大小比较的有关问题

一个关于大小比较的问题
变量a是不断递增的,但是到达某个值(比如128)后马上反转变成0然后再递增,
或者说   a   =   (++a)%128,在a递增的过程当中记下两个值a1和a2,比较a1和a2的大小,
例如a1   =   127,   a2   =   1但是a2有可能是反转后的1,因此从时间先后关系来看a2应该是大于a1的,请问这种情况的大小比较如何实现呢?

------解决方案--------------------
仅仅比较 a1 和 a2 是无法得到你要的结果的。

必须提供辅助的信息,
比如 a1 a2提取时候翻转了多少次;
或者 它们提取的时间【晚提取的肯定比较大】
------解决方案--------------------
先比较反转次数,若相同再比较a1a2
------解决方案--------------------
假设a1和a2之间相差只有半圈呢?
===============
if(a1> a2)
{
if(a1-a2 < 128/2)
printf( "a1> a2 \n ");
else printf( "a1 <a2 \n "); //说明 a2 比a1 多转了一圈
}
else
{ ... //这里同上 判断 a1 a2的距离即可
}
------解决方案--------------------
如果 a1 a2的距离 允许 > = 128/2,
那么就必须要有辅助信息才能判断了 ...
------解决方案--------------------
可以放大一下,再处理

a = (++a)%256;

取a真实值时 k = a%128;
比较时则取两个时刻的a值;

if(a1-a2 > 0 || a1-a2 < -128) //则a1> a2
else // a1 <a2;

------解决方案--------------------
可以放大一下,再处理

a = (++a)%256;

取a真实值时 k = a%128;
比较时则取两个时刻的a值;

if(a1-a2 > 0 || a1-a2 < -128) //则a1> a2
else // a1 <a2
次比较方法错误!

======================
更正一下比较 用jixingzhong() 的比较方法,

if(a1> a2)
{
if(a1-a2 <= 128)
printf( "a1> a2 \n ");
else printf( "a1 <a2 \n ");
}
else
{
....
}

有个问题是, 在递增过程中取a1,a2
那你应该知道哪个是先取哪个是后取的啊
后取一定比先取大,这就不用比较了



------解决方案--------------------
那你就在a1,a2取到值时就用其他辅助变量来标识,比如取a1,定义一个变量i,i=0,每
转一次i就增加1。
比较的时候先比较i
------解决方案--------------------
同意记录圈数,先比较圈数,如果圈数相同,再比较数值。
至于半圈的问题,真的存在么?
假设数值上a1 <a2:
如果a1比a2少半圈的话,那么a1的圈数应该跟a2的圈数一样,那么比较数值,得到a1 <a2;
如果a2比a1少半圈的话,那在比较圈数时就已经判定a1> a2了。
------解决方案--------------------
呵呵,
这是一个建立模型的问题,和编程没太大的关系。用什么语言算法都没关系。

必须有足够的信息量才能解决。仅凭一个参数给的信息是不够的。
------解决方案--------------------
再来一个变量 记录他们的圈数差(即 一个作--,一个作++,当转过一圈时),
先比较这个变量,相等再比较他们