BCD码如何转换成十六进制数
发布网友
发布时间:2022-05-01 02:03
我来回答
共3个回答
热心网友
时间:2022-06-22 05:18
BCD码与十进制数的转换关系很直观,相互转换也很简单。
将十进制数75.4转换为BCD码:7-》0111,5-》0101,4-》0100所以拼成8421BCD码的结果是:(0111 0101.0100)BCD;若将BCD码1000 0101.0101转换为十进制数:1000-》8,0101-》5,0101-》5所以结果是:(85.5)。
注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。
扩展资料
看数据的来源和用途。BCD码一般用于输入和输出,例如来自拨码开关的数据是BCD码,送给显示电梯楼层的译码器芯片的是BCD码。
8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。
BCD码用十六进制格式输入,其最高位(符号位为16#F(2#1111)。BCD码的低3位各位只能是0~9,如果是16#A~16#F则会出错。 计数器的预设值PV是0~999的BCD码,可以用格式为C#的常数(C#1~C#999)作为计数器的预设值。
热心网友
时间:2022-06-22 05:18
对于BCD码每四位代表一个十进制数字0-9,可以将BCD码转化为十进制,然后再将十进制转化为十六进制。
下面是以8421BCD码为例编写的vc++6.0程序代码:
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
int ConvertStringToInt(string s)
{
if(s=="0000")
return 0;
else if(s=="0001")
return 1;
else if(s=="0010")
return 2;
else if(s=="0011")
return 3;
else if(s=="0100")
return 4;
else if(s=="0101")
return 5;
else if(s=="0110")
return 6;
else if(s=="0111")
return 7;
else if(s=="1000")
return 8;
else if(s=="1001")
return 9;
else return 10;
}
void main()
{
cout<<"输入格式是:xxxx xxxx xxxx xxxx"<<endl;
cout<<"然后按回车键两次。"<<endl;
string str,temp;
int num=0,temp2;
getline(cin,str);
istringstream sin(str);
while(sin>>temp)
{
temp2=ConvertStringToInt(temp);
if(temp2>=10)
{
cout<<"输入的数据有错!"<<endl;
break;
}
num=num*10+temp2;
}
cout<<"十进制"<<num<<endl;
cout<<"十六进制"<<hex<<num<<endl;
}
如果不会编译源代码,可以把邮箱写出来,我给你发程序。
热心网友
时间:2022-06-22 05:19
先将BCD码转换为十进制,然后在再转换成十六进制
8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。