十进制转换压缩BCD程序如何写?

十进制转换压缩BCD程序如何写?,第1张

#include "stdio.h"

#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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/7869359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存