打印

数制转换之查表法

[复制链接]
2944|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bccfz|  楼主 | 2009-9-23 14:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在需要用数码管显示0~99,但是又觉得16进制转换成10进制太麻烦,所以就试着用查表的方式来进行数值转换,试了一下果然不错。可能各位一直都这么做的,但是我是新手,第一次做这个,做出来还挺高兴的,出来显一下。查表法用于小规模显示还是很好用的。
  code char H_O[100] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
                                16,17,18,19,20,21,22,23,24,25,
                                     32,33,34,35,36,37,38,39,40,41,
                                 48,49,50,51,52,53,54,55,56,57,
                                64,65,66,67,68,69,70,71,72,73,
                             80,81,82,83,84,85,86,87,88,89,
                            96,97,98,99,100,101,102,103,104,105,
                                112,113,114,115,116,117,118,119,120,121,
                          128,129,130,131,132,133,134,135,136,137,
                           144,145,146,147,148,149,150,151,152,153};
评分
参与人数 1威望 +6 收起 理由
程序匠人 + 6

相关帖子

沙发
xlnflw| | 2009-9-23 14:48 | 只看该作者
好东西。。。。。有创意。真的。。

使用特权

评论回复
板凳
zcw9911| | 2009-9-23 15:25 | 只看该作者
也是一种办法,但是说16进制转10进制麻烦就不同意了,不就是C语言的两条语句吗

使用特权

评论回复
地板
bccfz|  楼主 | 2009-9-23 16:52 | 只看该作者
两条语句?
我大脑中只是浮现出汇编的一坨,两条语句怎么实现啊,万望zcw9911兄不吝赐教

使用特权

评论回复
5
mohanwei| | 2009-9-23 17:08 | 只看该作者
void DispUchar(uchar value)
{
        uchar temp;
        temp=value/10 + '0';// 十位
        //发送temp
       temp=value%10 + '0';//个位
      //发送temp
}

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
程序匠人 + 6
6
bccfz|  楼主 | 2009-9-23 17:24 | 只看该作者
非常感谢。原来可以这样写,我试了一下没问题,但是为什么要加‘0’呢,我没加是正确的啊。
涉及到取整取余没有查表快吧,当然我是因为不会才硬着头皮查表的。

使用特权

评论回复
7
mohanwei| | 2009-9-23 17:44 | 只看该作者
加'0'是显示ascii码,如果你的系统可以直接显示10进制数字当然不用加'0'了呵呵

使用特权

评论回复
8
mohanwei| | 2009-9-23 17:46 | 只看该作者
你这种显示的应用,对速度不可能要求很苛刻的……所以,代码尽量用简短一点的写法,以便于阅读、维护。

使用特权

评论回复
9
hruid| | 2009-9-23 19:42 | 只看该作者
好东西。。。。。有创意。真的。。

使用特权

评论回复
10
bccfz|  楼主 | 2009-9-23 20:10 | 只看该作者
真是抛砖引玉啊,非常感谢mohanwei这么耐心的讲解

使用特权

评论回复
11
踢球老越位| | 2009-9-23 20:48 | 只看该作者
无非是时间换空间,或者空间换时间。。。

使用特权

评论回复
12
程序匠人| | 2009-9-23 21:14 | 只看该作者
鼓励加分

使用特权

评论回复
13
杜专| | 2009-9-23 22:33 | 只看该作者
认真学习下
谢谢

使用特权

评论回复
14
戒指320| | 2009-9-23 23:13 | 只看该作者
用汇编 不是 “一坨”
这么整
;***********除法子程序*******************
div:
        sub        a,wk01        ;a是被除数,wk01是除数(为10)
        bts0        fc        ;商在wk02里,余数在a里       
        jmp        subaga        ;wk02用之前要清0
        add        a,wk01       
        ret       
subaga:
        incms        wk02
        jmp        div
如果用汇编写的话 查表的话会省事点。用c的话还是 /  加% 好用。

使用特权

评论回复
15
xwj| | 2009-9-24 00:26 | 只看该作者
汗~
这也查表?
看来程序存储器真的是不要钱的;P

不过这个创意和肯动脑筋的习惯值得表扬,如果在动脑解决问题后还能再进一步思考、多考虑有没有更好的方法,那就完美了。

使用特权

评论回复
16
bccfz|  楼主 | 2009-9-24 09:11 | 只看该作者
泰斗捧场,,受宠若惊。:$
谢谢洗碗机的建议!!

使用特权

评论回复
17
mohanwei| | 2009-9-24 09:56 | 只看该作者
这不算什么,我当年学完一点51汇编皮毛,做的第二个小项目,是采集一个4-20mA信号转换成物理量显示的,用的是10bit ADC……对方催得紧,才发现自己不懂的地方太多了,上网还得带个软盘去……于是一发狠,把2051换成51,再用turboc编个程序(说明不是不会编程,只是不知道怎么用51的汇编指令来表达……说白了就是实践还太少),直接把每1bit代表的物理量直接做成表:1024*2,输出成asm格式……
一个月之后,汇编用的熟练了,Keil C51也入门了,再回头看看那张大表,大笑不已……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

0

粉丝