日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BCD码详解

發布時間:2023/12/10 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BCD码详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、BCD碼的種類

1. 8421 BCD碼

2. 5421 BCD碼和2421 BCD碼

3. 余3 碼

4. Gray碼(格雷碼)

2、BCD碼的格式

3、BCD碼的運算法則

4、8421 BCD碼舉例說明

5、壓縮與非壓縮

6、C語言壓縮bcd碼


1、BCD碼的種類

BCD碼可分為有權碼和無權碼兩類:有權BCD碼有8421碼、2421碼、5421碼,其中8421碼是最常用的;無權BCD碼有余3碼、格雷碼等。

1. 8421 BCD

8421 BCD碼是最基本和最常用的BCD碼,它和四位自然二進制碼相似,各位的權值為8421,故稱為有權BCD碼。和四位自然二進制碼不同的是,它只選用了四位二進制碼中前10組代碼,即用0000~1001分別代表它所對應的十進制數,余下的六組代碼不用。

2. 5421 BCD碼和2421 BCD

5421 BCD碼和2421 BCD碼為有權BCD碼,它們從高位到低位的權值分別為54212421。這兩種有權BCD碼中,有的十進制數碼存在兩種加權方法,例如,5421 BCD碼中的數碼5,既可以用1000表示,也可以用0101表示;2421BCD碼中的數碼6,既可以用1100表示,也可以用0110表示。這說明5421BCD碼和2421 BCD碼的編碼方案都不是惟一的,表1-2只列出了一種編碼方案。

上表中2421 BCD碼的10個數碼中,0918273645的代碼對應位恰好一個是0時,另一個就是1。就稱0918互為反碼。

3. 3

3碼是8421 BCD碼的每個碼組加3(0011)形成的。常用于BCD碼的運算電路中。

4. Gray(格雷碼)

Gray碼也稱循環碼,其最基本的特性是任何相鄰的兩組代碼中,僅有一位數碼不同,因而又叫單位距離碼。

Gray碼的編碼方案有多種,典型的Gray碼如下表所示。從表中看出,這種代碼除了具有單位距離碼的特點外,還有一個特點就是具有反射特性,即按表中所示的對稱軸為界,除最高位互補反射外,其余低位數沿對稱軸鏡像對稱。利用這一反射特性可以方便地構成位數不同的Gray碼。

2、BCD碼的格式

計算機中的BCD碼,經常使用的有兩種格式,即分離BCD碼,組合BCD碼。

  所謂分離BCD碼,即用一個字節的低四位編碼表示十進制數的一位,例如數82的存放格式為:

_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示無關值。

  組合BCD碼,是將兩位十進制數,存放在一個字節中,例82的存放格式是10000010

3、BCD碼的運算法則

由于編碼是將每個十進制數用一組4位二進制數來表示,因此,若將這種BCD碼直接交計算機去運算,由于計算機總是把數當作二進制數來運算,所以結果可能會出錯。例:用3BCD碼求38+49

  解決的辦法是對二進制加法運算的結果采用"6修正,這種修正稱為BCD調整。即將二進制加法運算的結果修正為BCD碼加法運算的結果,兩個兩位BCD數相加時,對二進制加法運算結果采用修正規則進行修正。修正規則:

(1)如果任何兩個對應位BCD數相加的結果向高一位無進位,若得到的結果小于或等于9,則該不需修正;若得到的結果大于9且小于16,該位進行加6修正。

(2)如果任何兩個對應位BCD數相加的結果向高一位有進位時(即結果大于或等于16),該位進行加6修正.

(3)低位修正結果使高位大于9,高位進行加6修正

48421 BCD碼舉例說明

BCD碼是一一對應的

如:十進制的123 用BCD表示為:0001 0010 0011

因為:十進制的 1 用二進制表示是 0001

? ? ? ? ?十進制的 2 用二進制表示是 0010

? ? ? ? ?十進制的 3 用二進制表示是 0011

BCD碼和二進制的區別:123的二進制應該用短除法求得1111011由此可見,BCD碼只是機械地用二進制表示十進制的每一位

5、壓縮與非壓縮

區別就是BCD碼是8位的,浪費4位用0填充,壓縮的BCD碼是4位的,沒有浪費

由于1字節有8bit(8個0或1)如果用一字節存儲4位BCD碼(其余補0)就是非壓縮

如十進制的123:

非壓縮碼? 00000001 00000010 00000011

壓縮碼? 0001 0010 0011

6C語言壓縮bcd

#include<stdio.h> #include<stdlib.h> #include<string.h>/* * 字符串轉成bcd碼,這個是正好偶數個數據的時候,如果是奇數個數據則分左靠還是右靠壓縮BCD碼 */ intasc_to_bcd(char * dest,const char *src) {unsigned char temp;while(*src !='\0'){temp = *src;*dest |=((temp&0xf)<<4);src++;temp = *src;*dest |= (temp&0xf);src++;dest++;}return 0; }intasc_to_bcd_right(char *dest,const char *src,int src_len) {unsigned char temp;if((src_len %2) !=0){*dest &= 0;temp = *src;*dest |= (temp&0xf);src++;dest++;}asc_to_bcd(dest,src);return 0; }intasc_to_bcd_left(char *dest,const char *src,int src_len) {unsigned char temp;if((src_len %2) !=0){dest[src_len-1] &=0;}asc_to_bcd(dest,src);return 0; }voidprint_hex(char * bcd,int len) {int i=0;for(i=0;i<len;i++){int n = 8;while(n--){if((bcd[i] &(0x1<<n))==0)printf("0");elseprintf("1");}putchar('\n');} }intbcd_to_asc(char *dest,const char *src,int src_len) {unsigned char temp;char *t = dest;while(src_len--){*t |= ((*src&0xf0)>>4);*t++ |= 0x30;*t |= (*src&0xf);*t++ |= 0x30;src++;}return 0; }intleft_bcd_to_asc(char *dest,const char * src,int src_len) {bcd_to_asc(dest,src,src_len);dest[src_len*2 -1] = '\0';return 0; }intright_bcd_to_asc(char *dest,const char * src,int src_len) {bcd_to_asc(dest,src,src_len);memmove(dest,dest+1,src_len*2-1);dest[src_len*2-1] = '\0';return 0; }int main(void) {char str[100];char *str1 = "1234567";int str_len = strlen(str1);int bcd_len = (str_len+1)/2;char *bcd = (char *)malloc(bcd_len);printf("str_len = %d\n",str_len);printf("bcd_len = %d\n",bcd_len);memset(bcd,0,bcd_len);memset(str,0,100);#if 0printf("右靠\n");asc_to_bcd_right(bcd,str1,str_len);print_hex(bcd,bcd_len);right_bcd_to_asc(str,bcd,bcd_len);printf("str = %s\n",str); #endif#if 1printf("左靠\n");asc_to_bcd_left(bcd,str1,str_len);print_hex(bcd,bcd_len);//memset(str,0,100);left_bcd_to_asc(str,bcd,bcd_len);printf("str = %s\n",str); #endifreturn 0; }

?

?

?

總結

以上是生活随笔為你收集整理的BCD码详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五十路japanese55丰满 | 少妇一级淫片免费放2 | 手机av免费在线观看 | 久久精品国产亚洲av久一一区 | 日日夜夜精品视频 | 亚洲性久久 | 亚洲av激情无码专区在线播放 | 好看的av在线 | 久久精品不卡 | 在线免费av观看 | 国产一级片播放 | 亚洲国产精品无码久久久久高潮 | 放几个免费的毛片出来看 | 久久久午夜精品福利内容 | 国产剧情在线视频 | 欧美成人三级在线观看 | 国产亚洲制服 | 在线看成人片 | 一区二区三区四区五区在线视频 | 手机av免费在线观看 | 日韩欧美一区二区视频 | 久久久久二区 | 国产精品无码专区av在线播放 | 夜晚福利视频 | 亚洲无吗一区二区三区 | 亚洲GV成人无码久久精品 | 亚洲热热 | 亚洲国产综合在线 | 久热中文字幕 | 黄色一级大片在线观看 | 久久精品人妻一区二区 | 干骚视频 | 中文婷婷 | 国产精品久久久久久婷婷天堂 | 日本一本二本三区免费 | 国产高清网站 | 草视频在线观看 | 国产精品电影一区 | 一本久久精品一区二区 | 天天做天天爱天天爽综合网 | 色综合久久久久综合体桃花网 | 成人爱爱视频 | 久久成人综合 | 中文字幕――色哟哟 | 日韩av在线免费播放 | 日韩激情文学 | 日韩欧美电影一区二区三区 | 日本国产中文字幕 | 爱爱视频免费看 | 日本泡妞xxxx免费视频软件 | 欧美成人午夜 | 亚洲欧美综合色 | 无码精品视频一区二区三区 | 成人av免费| 日本打屁股网站 | 99在线小视频 | 中文字幕69| 天天天天天操 | 国产高清自拍一区 | 五月婷综合 | 操女人逼逼视频 | 最近日韩中文字幕 | 免费在线观看高清影视网站 | 亚洲精品视 | 成人黄色免费网址 | 黄色小视频免费网站 | 黑丝美女啪啪 | 国产精品乱 | 欧美三级色图 | 精品一区二区三区久久 | 黄色污网站在线观看 | av免费观看网址 | 成人久久毛片 | 国产毛片3 | 冲田杏梨av| 欧美成人午夜影院 | 国产成人精品免费看视频 | 亚洲色图21p | 超碰在线观看99 | 99久久99| 一区二区三区高清在线观看 | 久久av资源网| 日本免费黄色片 | 夜夜嗨av色一区二区不卡 | 91蜜臀精品国产自偷在线 | 另类图片亚洲色图 | 久久人精品 | 思思99re| 日本在线视频www色 国产在线视频网址 | 51精品 | www.精品视频 | 欧美一区二区免费视频 | av在线激情| 鸥美毛片| 日韩国产免费 | 狠狠躁夜夜躁人人爽视频 | 日本在线不卡一区 | 相亲对象是问题学生在线观看 | 亚洲激情免费 |