数字翻转机

本文介绍了一个用于计算两个无符号整数之间间距的C语言程序。通过利用无符号整数溢出特性,该程序能有效计算即使在翻转情况下的间距。适用于定时器等应用场景。
#include <stdio.h>
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值