标题: 如何取到一个十进制数据的每位上的数字? [打印本页]
作者: answerpro 时间: 2006-7-1 13:35 标题: 如何取到一个十进制数据的每位上的数字?
比如有一个int或long int的数据(例123456),用C语言如何才能单独取出每一个位置上的数字呢(比如个位是6,十位是5……),我需要用在LED数码显示上。
希望大家帮忙。我用了除法,发现会影响其他变量的数据,不知是什么原因。
作者: spideman 时间: 2006-7-1 15:12
我用的就是除法可以的
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;
作者: seuafu2005 时间: 2006-7-3 11:06
可以用移位加与的方式取出
作者: zhwdy81 时间: 2006-7-3 14:41
运算过程中全部都用long型的,就好了
作者: answerpro 时间: 2006-7-5 15:48
全部用long型是不行的,我的目的是取出每位上的数字再通过数码管显示出来。
用除法我现在发现全局变量及全局常量会变成其他乱七八糟的数字。
版主的方法能否给个示例程序。谢谢。
作者: seuafu2005 时间: 2006-7-5 17:41
比方说1234这个数
先和000F与上,得到4;然后原来的1234右移4位,得到0123,再和000F与,得到3,依次类推
作者: zhwdy81 时间: 2006-7-10 09:36
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型的变量
作者: answerpro 时间: 2006-7-18 09:51
版主seuafu2005,你的方法只是取一个16进制数上的每一位的方法吧?
我要求出一个10进制数的每一位。
谢谢zhwdy81,但这个方法我测试过,虽然可以得到正确的结果,但还会修改掉其他变量的值。
作者: strongchen 时间: 2006-7-19 10:58
可以先转换成BCD码,然后再移位得出。
作者: zhwdy81 时间: 2006-7-19 23:36
修改了什么变量啊
我用的时候好好的啊
作者: answerpro 时间: 2006-7-24 08:48
可能是我数据类型没有设置正确,现在好象已经好了。感谢各位的解答。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |