ASCII码与BCD码的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASCII码与BCD码的区别相关的知识,希望对你有一定的参考价值。

ASCII码是指美国标准信息交换码,选用了常用的128个字符,其中包括32个控制符、10个十进制数(指字符形态的数)、52个英文大写和小写字母、34个专用符号。编码方法是由7位二进制数对它们进行编码,即用0000000-1111111共128种不同的数码串分别表示128个字符,ASCII码的机内码要在最高位补一个0,以便用一个字节表示一个字符。ASCII码主要用于显示现代英语和其他西欧语言,是最通用的信息交换标准。
BCD码是用4位二进制数来表示1位十进制数中的0-9这十个数码,是一种二进制的数字编码形式,是用二进制编码的十进制代码。BCD编码形式利用了四个位元来存储一个十进制的数码,使二进制与十进制之间的转换得以快捷的进行。
参考资料:《大学计算机-计算思维导论》,清华大学出版社2019
参考技术A ASCII码是用一个字节(8位二进制码)来表示一个字符,其中低7位为字符的ASCII值,它能表示128个符号和代码,其中用30H~39H来表示0~9的字符;而BCD码是用二进制数表示十进制数,是用4位二进制数表示一位十进制数码,用0H~9H表示十进制的0~9。

BCD码与16进制互转算法

BCD码与16进制互转算法

示例:

#include <stdio.h>
// HEX转BCD
//bcd_data(<0x255,>0)
unsigned char BCD2HEX(unsigned int bcd_data)

    unsigned char temp;
    temp=((bcd_data>>8)*100)|((bcd_data>>4)*10)|(bcd_data&0x0f);
    return temp;

// HEX转BCD
//hex_data(<0xff,>0)
unsigned int HEX2BCD(unsigned char hex_data)

    unsigned int bcd_data;
    unsigned char temp;
    temp=hex_data%100;
    bcd_data=((unsigned int)hex_data)/100<<8;
    bcd_data=bcd_data|temp/10<<4;
    bcd_data=bcd_data|temp%10;
    return bcd_data;

int main(void)

    unsigned int temp,temp1;
    temp = BCD2HEX(11);
    temp1 = HEX2BCD(0xb);
    printf("temp:0x%x\\n",temp); //BCD码就是十进制数的二进制数
    printf("temp1:0x%x\\n",temp1);
    return 0 ;

运行结果:

temp:0xb
temp1:0x11

以上是关于ASCII码与BCD码的区别的主要内容,如果未能解决你的问题,请参考以下文章

BCD码和二进制码有啥区别

什么是ASCII码和BCD码?它们各自的作用及编码方法是什么?

ascii码与unicode码的区别

请教BIN、BCD、二进制、ACSII码有啥区别,多谢

十进制ASCII码的转换!

ascii码与二进制码有何区别?