精华内容
下载资源
问答
  • 二进制BCD码转换

    2009-12-07 14:20:39
    // DESCRIPTION : Bin to Bcd converter // Input (data_in) width : 4 // Output (data_out) width : 8 // Enable (EN) active : high // // Download from : http://www.pld.com.cn //---------------------------...
  • C#下16进制和BCD码转换代码 [csharp]view plaincopy privatestaticByte[]ConvertFrom(stringstrTemp) { try { ...

    C#下16进制和BCD码转换代码

     
     
    [csharp]  view plain  copy
     
    1. private static Byte[] ConvertFrom(string strTemp)  
    2.         {  
    3.             try  
    4.             {  
    5.                 if (Convert.ToBoolean(strTemp.Length & 1))//数字的二进制码最后1位是1则为奇数  
    6.                 {  
    7.                     strTemp = "0" + strTemp;//数位为奇数时前面补0  
    8.                 }  
    9.                 Byte[] aryTemp = new Byte[strTemp.Length / 2];  
    10.                 for (int i = 0; i < (strTemp.Length / 2); i++)  
    11.                 {  
    12.                     aryTemp[i] = (Byte)(((strTemp[i * 2] - '0') << 4) | (strTemp[i * 2 + 1] - '0'));  
    13.                 }  
    14.                 return aryTemp;//高位在前  
    15.             }  
    16.             catch  
    17.             { return null; }  
    18.         }  
    19.         /// <summary>  
    20.         /// BCD码转换16进制(压缩BCD)  
    21.         /// </summary>  
    22.         /// <param name="strTemp"></param>  
    23.         /// <returns></returns>  
    24.         public static Byte[] ConvertFrom(string strTemp, int IntLen)  
    25.         {  
    26.             try  
    27.             {  
    28.                 Byte[] Temp = ConvertFrom(strTemp.Trim());  
    29.                 Byte[] return_Byte = new Byte[IntLen];  
    30.                 if (IntLen != 0)  
    31.                 {  
    32.                     if (Temp.Length < IntLen)  
    33.                     {  
    34.                         for (int i = 0; i < IntLen - Temp.Length; i++)  
    35.                         {  
    36.                             return_Byte[i] = 0x00;  
    37.                         }  
    38.                     }  
    39.                     Array.Copy(Temp, 0, return_Byte, IntLen - Temp.Length, Temp.Length);  
    40.                     return return_Byte;  
    41.                 }  
    42.                 else  
    43.                 {  
    44.                     return Temp;  
    45.                 }  
    46.             }  
    47.             catch  
    48.             { return null; }  
    49.         }  
    50.         /// <summary>  
    51.         /// 16进制转换BCD(解压BCD)  
    52.         /// </summary>  
    53.         /// <param name="AData"></param>  
    54.         /// <returns></returns>  
    55.         public static string ConvertTo(Byte[] AData)  
    56.         {  
    57.             try  
    58.             {  
    59.                 StringBuilder sb = new StringBuilder(AData.Length * 2);  
    60.                 foreach (Byte b in AData)  
    61.                 {  
    62.                     sb.Append(b >> 4);  
    63.                     sb.Append(b & 0x0f);  
    64.                 }  
    65.                 return sb.ToString();  
    66.             }  
    67.             catch { return null; }  
    68.         }  
    posted @ 2017-03-11 11:16 AndyZhaolsh 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • 本文为大家介绍了二进制BCD转换电路。
  • 4位二进制-BCD码转换

    千次阅读 2021-04-03 16:34:10
    module bin2bcd_4bits ( input [3 : 0] bin, input EN, output logic [4 : 0] bcd, output logic valid ); always_comb begin if(EN==1) begin case(bin) 4'b0001: begin bcd = 5'b00001 ; ...
    `timescale 1ns/1ps
    
    module bin2bcd_4bits (
    
    	input 		[3 : 0]	bin,
    	input 			EN,
    	output	logic 	[4 : 0]	bcd,
    	output 	logic		valid
    
    	);
    
        always_comb begin
        if(EN==1) begin
          case(bin)  
          4'b0001: begin bcd = 5'b00001 ; valid=1;  end
          4'b0010:  begin bcd = 5'b00010 ; valid=1;  end
          4'b0011:  begin bcd = 5'b00011 ; valid=1;  end
          4'b0100:  begin bcd = 5'b00100 ; valid=1;  end
          4'b0101:  begin bcd = 5'b00101 ; valid=1;  end
          4'b0110:  begin bcd = 5'b00110 ; valid=1;  end
          4'b0111:  begin bcd = 5'b00111 ; valid=1;  end
          4'b1000:  begin bcd = 5'b01000 ; valid=1;  end
          4'b1001:  begin bcd = 5'b01001 ; valid=1;  end
          4'b1010:  begin bcd = 5'b10000 ; valid=1;  end
          4'b1011:  begin bcd = 5'b10001 ; valid=1;  end
          4'b1100:  begin bcd = 5'b10010 ; valid=1;  end
          4'b1101:  begin bcd = 5'b10011 ; valid=1;  end
          4'b1110:  begin bcd = 5'b10100 ; valid=1;  end
          4'b1111:  begin bcd = 5'b10101 ; valid=1;  end
          default:  begin bcd = 5'b00000 ; valid=1;  end
        endcase
        end
        else begin bcd = 5'b00000; valid=0;  end
      end
    
    endmodule
    
    展开全文
  • 二进制BCD码转换

    千次阅读 2011-10-24 11:49:51
    #define WORD_MSB(x) *((unsigned char *)&x+1) #define WORD_LSB(x) *((unsigned char *)&x) ...//二进制转换为压缩BCD数,结果存入saveBCD中 int BinToBcd(unsigned char val) {  unsig
    #define WORD_MSB(x)    *((unsigned char *)&x+1)
    
    #define WORD_LSB(x)    *((unsigned char *)&x)


    unsigned int saveBCD;//二进制数转换为压缩BCD数,结果存入saveBCD中


    int BinToBcd(unsigned char val)
    {
        unsigned char i,temp;


        saveBCD = 0;


        for(i=7;i>0;i--)
        {
            saveBCD <<= 1;


            if( val & 0x80 )
                WORD_LSB(saveBCD) |= 1;


            temp = WORD_LSB(saveBCD) + 0X03;
            if( temp & 0x08 )
                WORD_LSB(saveBCD) = temp;


            temp = WORD_LSB(saveBCD) + 0X30;
            if( temp & 0x80 )
                WORD_LSB(saveBCD) = temp;


            val <<= 1;
        }


        saveBCD <<= 1;
        if( val & 0x80 )
            WORD_LSB(saveBCD) |= 1;


        return saveBCD;
    }


    //压缩BCD数转换为二进制数,被转换的数不能大于255
    unsigned char BcdToBin(unsigned int val)
    {
        unsigned char temp,temp1,ret,shift;


        //计算百位   y*100 = y*64 + y*32 + y*4 = y<<6 + y << 5 + y<<1
        temp  = WORD_MSB(val);


        shift = 5;
        do{
            temp <<= 1;
        }while(--shift);//左移5位,乘以32


        temp1 = temp<<1; //再左移一位,相当于左移6位,乘以64


        ret = temp + temp1 + 
            ((WORD_MSB(val))<<1) + ((WORD_MSB(val))<<1);//左移2位,乘以4


        //计算10位 y*10 = y*8 + y*2 = y<<3 + y<<1
        temp = WORD_LSB(val) >> 4;


        temp1  = temp;
        shift = 3;
        do{
            temp1<<= 1;
        }while(--shift);//左移3位,乘以8


        //加上个位
        ret += temp1 + (temp<<1);


        //个位
        ret += (WORD_LSB(val) & 0x0f);    


        return ret;
    }
    展开全文
  • BCD是指用二进制来表示十进制数的编码,即用4位二进制来表示一位十进制数,因此4位二进制数表示最大的十进制数9(1001),只取十六个数中的十个数。 比如: $$ BCD码:0x99(153),该BCD码转换成十进制是99. $$ 算法...

    十进制与BCD码转换的算法

    BCD码

    BCD是指用二进制来表示十进制数的编码,即用4位二进制来表示一位十进制数,因此4位二进制数表示最大的十进制数9(1001),只取十六个数中的十个数。

    比如:

    $$
    BCD码:0x99(153),该BCD码转换成十进制是99.
    $$

    算法原理

    十进制是逢十进一,而十六进制是逢十六进一,它们之间的每次进位差66,所以一个十进制数要转换成BCD码,要先算清多进位的位数,比如,十进制9999进位了99/10=999/10=9次,每次进位和十六进制进位相比差66,所以一共差了9×6=549×6=54,即99+54=15399+54=153(BCD)。BCD码转化成十进制码也一样。

    代码

    static uint8_t BCD2DEC(uint8_t bcd)  
    {  
        return (bcd-(bcd>>4)*6);`
    }
    
    static uint8_t DEC2BCD(uint8_t dec)  
    {  
        return (dec+(dec/10)*6);`
    
    }

    转载于:https://www.cnblogs.com/zongJianKun/p/11184828.html

    展开全文
  • 实验一 二进制BCD转换一、实验内容将存放在R2中的一个单字节二进制数,转换成非压缩的二—十进制(BCD),并存放到R3R4R5中。二、实验仪器设备PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口...
  • 本例为单字节二进制数(0X20)转换为非压缩BCD ,存在0X25,0X24,0X23 中,0X25 为百位,0X23 为个位。main: MOV a,@0xa4 ;赋值MOV 0x20,aMOV 0x21,aMOV 0x22,aMOV a,@0x0 ;0x23,0x24,0x25 单元清0MOV 0x23,aMOV 0x24,a...
  • bcd码转换成十进制 bcd怎么转换为十进制BCD码的运算规则:BCD是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样,当将 BCD传送给运算器进行运算时,其结果需要修正。修正的规则...
  • 八位二进制bcd码

    2011-07-17 15:20:35
    用multisim11来实现八位二进制bcd码转换。其中包含了multisim实验电路图,可进行仿真看结果。
  • 二进制BCD码(内含完整C语言的代码)
  • FPGA 二进制bcd码

    千次阅读 2018-10-28 19:15:47
    //这是一个使用Verilog HDL编写的带使能端的8-bit二进制BCD码... //rst_n为使能端,binary为待转换二进制数,bcd转换后的BCD码 parameter B_SIZE=12; //B_SIZE为二进制数所占的位数,可根据需要进行扩展...
  • 大家可以看看,这个代码是关于二进制数如何转换bcd码的一个用vhdl编写的程序,可以参考下思路
  • 二进制bcd码(Verilog)试验验证成功 方便大家今后学习
  • 二进制BCD码可以采用Double_dabble算法,维基百科有详细介绍,简单可称为“移位加3”算法。 8位二进制数243,移位加3计算过程: 16位二进制65244,移位加3计算过程: verilog实现 方法1:纯组合逻辑实现 来自...
  • 二进制BCD码

    2017-04-29 18:47:00
    应用: 用fpga实现对数码管显示,以前通常的方法是进行整除取余进行运算,但是fpga并不擅长乘法除法运算,所以...因此在数码管显示中,也就是把256各位分出来,就可以用bcd码来表示,下面说一种二进制转换bcd码的...
  • 为方便读者学习,本文小编给读者提供了用verilog将二进制码转换为十进制BCD码的程序设计方法,供读者参考。
  • DH11 程序(以SF板为例)[包含单字节二进制转换BCD码程序].raDH11 程序(以SF板为例)[包含单字节二进制转换BCD码程序].rarr
  • 二进制BCD码(8421)

    万次阅读 2018-12-02 15:48:52
    最常用的方法是将二进制码转换BCD码(8421)。  8421:它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。  我们将二进制数(1101_0101)转换成十进制数...
  • verilog 二进制BCD码

    热门讨论 2021-04-02 17:46:34
    先将BCD码计数器清零,之后将二进制和BCD码计数器统统左移,二进制数移出来的最高位放到BCD码计数器的最低位,如下表所示! 每一次移位之后都判断下,BCD码计数器的十、分以及个位是否大于4,如果任何一位(4bit...
  • BCD码转换二进制和ASCII

    万次阅读 2015-01-17 16:32:10
    BCD码转换二进制和ASCII;用BCD码表示:十位上的十进制数为 2 == BCD码表示为 0010;个位上的十进制数9 === BCD码表示为 1001;所以总的来说 十进制数 29 用BCD码表示为:0010 1001;转换过程:把BCD码 0010(十...
  • 基于vhdl的二进制BCD码的设计,已经经过调试,可直接使用
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼这是我自己找的代码,一直有错,不知道怎么改DATA SEGMENTBUFF1 DB "Please enter BCD code:$"BUFF2 DB 50DB ?DB 50 DUP(0)BUFF3 DB 50DB ?DB 50 DUP(0)DATA ENDSSSTACK ...
  • Verilog二进制BCD码

    2021-04-07 12:23:55
    所谓BCD码,就是用四位的二进制表示十进制,什么意思呢,举例说明。 1:0001 2:0010 3:0011 4:0100 5:0101 6:0110 7:0111 8:1000 9:1001 123:0001 0010 0011(BCD码) 123:0000 0111 1011(二进制码) ...
  • 【单字节二进制整数转换BCD码子程序】;;入口:(A)= 二进制整数,;;出口:(R0)= 存放BCD码的RAM首址指针。BINtoBCD1:MOV B, #100DIV AB ;;A←百倍数, B←余数MOV @R0 A ;;RAM←百位数INC R0 ;;RAM指针加1MOV ...
  • 8位二进制BCD码.docx

    2019-06-20 16:54:49
    使用Verilog语言开发的将8位转入二进制数据转换BCD码,其中转换后分别输出为个、十、百位。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,440
精华内容 4,176
关键字:

二进制和bcd码的转换