#include "stdlib.h"
bcdf(int num)
{
switch(num)
{
case 0:return 0break
case 1:return 1break
case 2:return 10break
case 3:return 11break
case 4:return 100break
case 5:return 101break
case 6:return 110:break
case 7:return 111break
case 8:return 1000break
case 9:return 1001break
default printf("error using\n")getchar()exit(0))
}
}
main()
{
int a=59
int bcdnum[2]
bcdnum[0]=bcdf(a/10)
bcdnum[1]=bcdf(a%10)
printf("%d %d\n",bcdnum[0],bcdnum[1])
}
嘿嘿俺来帮你解答
BCD码转换成二进制码的方法:
1
可以按照按权展开公式:
将BCD码按照千位、百位、十位、个位展开计算
即
(BCD码的千位)×1000+(BCD码的百位)×100+(BCD码的十位)×10+(BCD码的个位)
上述式子之和即为转换后的二进制数。
呵呵
俺只提供给你一个算法
你可以按照上述算法编写一个BCD码转换成二进制码的子程序。
满意就选满意回答吧
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#define INPUT_BCD_MAX_LENGTH 10
int main(void)
{
//
char bcd[ INPUT_BCD_MAX_LENGTH ]
char *bin = NULL
char t_bin[ 6 ]
int i, j, q, r, t, bcd_len, bin_len
printf( "Please enter the decimal code: " )
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 ] = '\0'
strrev( t_bin )
strcat( bin, t_bin )
}
printf( "BCD coded decimal:\n%s\n", bin )
free( bin )
bin = NULL
system("pause")
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)