首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何取到一个十进制数据的每位上的数字?

如何取到一个十进制数据的每位上的数字?

比如有一个int或long int的数据(例123456),用C语言如何才能单独取出每一个位置上的数字呢(比如个位是6,十位是5……),我需要用在LED数码显示上。


希望大家帮忙。我用了除法,发现会影响其他变量的数据,不知是什么原因。

我用的就是除法可以的
n_3=Num/100; //求出 n_1,n_2,n_3
n_2=(Num-100*n_3)/10;
n_1=Num-100*n_3-10*n_2;
可以用移位加与的方式取出
运算过程中全部都用long型的,就好了
欢迎大家到汽车电子群2838085!
让我们推动中国汽车前进!
全部用long型是不行的,我的目的是取出每位上的数字再通过数码管显示出来。

用除法我现在发现全局变量及全局常量会变成其他乱七八糟的数字。

版主的方法能否给个示例程序。谢谢。
比方说1234这个数
先和000F与上,得到4;然后原来的1234右移4位,得到0123,再和000F与,得到3,依次类推
unsigned long longdata=0x1e240;//123456例如最大6位
unsigned long temp;
unsigned char d1,d2,d3,d4,d5,d6;

d1=longdata/100000;
temp=longdata%100000;
d2=temp/10000;
temp=temp%10000;
d3=temp/1000;
temp=temp%1000;
d4=temp/100;
temp=temp%100;
d5=temp/10;
d6=temp%10;

如果要提高运算速度的话,中间再设一个int型的变量
欢迎大家到汽车电子群2838085!
让我们推动中国汽车前进!
版主seuafu2005,你的方法只是取一个16进制数上的每一位的方法吧?
我要求出一个10进制数的每一位。

谢谢zhwdy81,但这个方法我测试过,虽然可以得到正确的结果,但还会修改掉其他变量的值。
可以先转换成BCD码,然后再移位得出。
海纳百川  有容乃大
修改了什么变量啊
我用的时候好好的啊
欢迎大家到汽车电子群2838085!
让我们推动中国汽车前进!
可能是我数据类型没有设置正确,现在好象已经好了。感谢各位的解答。
返回列表