查看: 3119|回复: 3

十六进制数转BCD码显示

[复制链接]
  • TA的每日心情
    奋斗
    2013-7-4 23:49
  • 签到天数: 21 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2014-5-8 17:31:07 | 显示全部楼层 |阅读模式
    分享到:
    在计算机中,数据是以0和1的二进制方式来表示的。比如一个8位的二进制数,就表示为 0001 0001,由于二进制数用起来比较不方便,所以人们通常以16进制的方式来表达,比如上述的00010001的16进制表示为0x11。
    我们知道16进制的0x11, 如果用十进制来表示的话,代表的数是16。

    由于十进制数是人们在日常生活中常用的数据表示方式。所以,当我们想要显示某个数的话,一般会转化为十进制里显示。下面我们来看看如果把一个4位的十进制数以BCD码的形式显示出来。

    void BS004_COM1_Send_4bits_BCD_Num(int number)  //圆点博士:发送一个字符
    {
    unsigned int num;
    unsigned char num_th[4];
    unsigned char i,bcd_code_len;
    //
    num=fabs(number);
    if(number<0) BS004_COM1_Send_Char('-');    //圆点博士:发送字符-
    if(num>9999) num=9999;
    if(num>999) bcd_code_len=4;
    else if(num>99) bcd_code_len=3;
    else if(num>9) bcd_code_len=2;  
    else bcd_code_len=1;
    //
    if(num>999) {num_th[3]=num/1000; num-=num_th[3]*1000;}
    if(num>99)  {num_th[2]=num/100;  num-=num_th[2]*100; }
    if(num>9)   {num_th[1]=num/10;   num-=num_th[1]*10; }
    num_th[0]=num;
    //
    for(i=0;i

    代码首次判别数据是否是负数 ,如果是的话,显示符号-。
    然后我们看到,转换是以除法和减法的方式来实现的。

    回复

    使用道具 举报

    该用户从未签到

    发表于 2014-5-29 13:11:05 | 显示全部楼层
    0x11不应该是17吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-7-4 23:49
  • 签到天数: 21 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2014-5-29 13:19:46 | 显示全部楼层
    BCD码还是11阿
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-5-29 15:55:01 | 显示全部楼层
    圆点博士 发表于 2014-5-29 13:19
    BCD码还是11阿

    我们知道16进制的0x11, 如果用十进制来表示的话,代表的数是16。
    这里啊 (11)16 = (16)10 ?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-25 15:41 , Processed in 0.158102 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.