#include <stdio.h>
typedef unsigned int uint32;
typedef unsigned int uint32;
void main(void)
{
uint32 b=2;
uint32 c=1;
printf("%x", ( (volatile)(0xffffffff+(c-b) ) )+1 );
b=1;
c=2;
printf("%x", ( (volatile)(0xffffffff+(c-b) ) )+1 );
}
}
翻转定义:0xffffffff+1=0 这时就发生了一次翻转
此程序的用途是为了计算,b,c之间的间距。因为是无符号型的,在实际应用中c的值如果未发生翻转,那么c是大于b的。
这段程序可用于无符号的定时器程序的外围函数。
未发生翻转时c-b表示:b,c之间的距离
发生翻转时c-b表示:b,c之间还有多大的距离才会发生重叠,即c翻转一次后和b的距离,这个距离表示还有多少距离c才会赶上b