当前位置:首页 » 编程语言 » c语言二进制转bcd
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言二进制转bcd

发布时间: 2022-01-13 17:59:52

1. c语言将八位无符号二进制数转换成BCD码

第一步,将8位无符号二进制整数除以100,得到两个结果:商和余数,这个商就是3位压缩bcd码的最高4位(截掉高4位,留下低4位二进制码);
第二步,将上面的余数除以10,又得到两个结果:商和余数,将商的低4位作为3位压缩bcd码的中间4位,余数的低4位作为3位bcd码的最低4位。

2. 如何用c语言实现bcd码转十六进制数比如BCD码5(0101),怎么转成0x05

#include<stdio.h>
#include<string.h>
int main()
{
char a[20],b[5];
int i,result = 0,k = 1,j = 0;
printf("输入一个二进制数:\n");
gets(a);
for(i = strlen(a)-1;i >= 0;i --)
{
if(a[i] == '1') result += 1 << (k-1); //如果是1,用1*位权
if(k == 4 || i == 0) //每四位计算一次结果(result)。
//如果到了最高位(i==0)不足四位(比如100 0000),也计算
{
switch(result)
{
case 10: b[j++]='A';break; //大于等于十转化成字母
case 11: b[j++]='B';break;
case 12: b[j++]='C';break;
case 13: b[j++]='D';break;
case 14: b[j++]='E';break;
case 15: b[j++]='F';break;
default: b[j++]=result + '0';break;
}
result = 0; //结果清零
k = 0; //表示位权的K清零
}
k ++; // 初始位权为1
}
b[j] = '\0';
printf("结果是:\n");
for(i = strlen(b)-1;i >= 0;i --)
printf("%c",b[i]);
printf("\n");
return 0;
}

3. 在C语言中如何将浮点型数据转换成BCD码的格式

BCD码就是二进制表示数据,你就直接把浮点数按每个数字转换成BCD码就行了。

4. c语言bcd进制转码程序问题


voidshowbit(intn)
{
if(n>1){
showbit(n/2);
printf("");
}
printf("%d",n%2);
}
voidshowoct(intn)
{
if(n>7){
showoct(n/8);
printf("");
}
printf("%d",n%8);
}
voidshowhex(intn)
{
if(n>15){
showhex(n/16);
printf("");
}
printf("%d",n%16);
}
intmain()
{
inta;
printf("inputanum:");
scanf("%d",&a);
showbit(a);
printf(" ");
showoct(a);
printf(" ");
showhex(a);
printf(" ");
}


键盘输入十进制整数,转二进制八进制十六进制,希望会对你有所帮助

5. 如何用C语言将32位的二进制数转换为BCD码,不要用除法和取余方法,速度太慢了,有没有好方法

“不要用除法和取余方法,速度太慢了”
C语言本身就是个二手货,你以为用“其它的方法”,就可以避免生成除法运算吗?
あまい

6. 利用C语言 将BCD码转成二进制输出的程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineINPUT_BCD_MAX_LENGTH10
intmain(void)
{
//
charbcd[INPUT_BCD_MAX_LENGTH];
char*bin=NULL;
chart_bin[6];
inti,j,q,r,t,bcd_len,bin_len;
printf("Pleaseenterthedecimalcode:");
scanf("%s",bcd);

bcd_len=strlen(bcd);
bin_len=bcd_len*6+1;
bin=(char*)malloc(bin_len);
memset(bin,0,bcd_len*6+1);
for(i=0;i<bcd_len;i++)
{
/*把字符转换为数字*/
q=bcd[i]-'0';
//将每个十进制转换为四位二进制
for(j=0;j<4;j++)
{
t=q/2;
r=q%2;
q=t;
if(q==0&&r!=1)
{
t_bin[j]='0';
}
else
{
//把数字转换为字符
t_bin[j]=r+'0';
}
}
t_bin[j]='';
t_bin[j+1]='';
strrev(t_bin);
strcat(bin,t_bin);
}

printf("BCDcodeddecimal: %s ",bin);
free(bin);
bin=NULL;

system("pause");
return0;
}

7. c语言bcd码转十进制

不知道我的理解对不对,这个问题,就是把一个整数还原成16进制数的表示方式,而这个十六进制数实际上表示的就是十进制数,所以我们只要把输入的数转换成十六进制表示就行了,但是有一个问题,其实需要注意的就是输入的时候10-15
其实是不能输入了,因为刚好就是A-F,所以不妨让输入值>=16
<=15
对于这个范围的数
其实只要两步就行了,第一,除以16取余数,对应的是各位上的数,除以16取整数商,对应的就是十位数,应该这样就可以
void
main(){
int
a;
cin>>a;
if(a<16||a>153)cout<<"不符合输入规则"<<endl;
else{
int
c=a%16;
int
b=a/16;
int
abc=
b*10+c;
cout<<abc<<endl;
}
}

8. 请帮助编写程序实现24位二进制数转8位bcd码,51单片机实现(具体型号msc1210),用C语言编程。

24bit数据最大16M,约1600万,需要8位bcd码表示
bcd[0]=x24bit%10;
x24bit=/10;
bcd[1]=x24bit%10;
x24bit=/10;
...
bcd[7]=x24bit%10
以上可用循环实现。

9. 用C语言编写一个将8位二进制数转化成BCD码的程序

#define uchar unsigned char
uchar 8_bit;
uchar ge,shi,;
=8_bit/100;
shi=8_bit%100/10;
ge =8_bit%10;