查看: 714|回复: 3

[原创DIY] 十六进制数转BCD码显示

[复制链接]

107

主题

11

好友

1583

积分

版主

Rank: 7Rank: 7Rank: 7

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

    [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

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

    回复

    使用道具 举报

    1

    主题

    0

    好友

    101

    积分

    童生

    Rank: 2

    该用户从未签到

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

    使用道具 举报

    107

    主题

    11

    好友

    1583

    积分

    版主

    Rank: 7Rank: 7Rank: 7

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

    [LV.4]偶尔看看III

    论坛版主职务勋章

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

    使用道具 举报

    1

    主题

    0

    好友

    101

    积分

    童生

    Rank: 2

    该用户从未签到

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

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

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-11 06:22 , Processed in 0.089561 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部