二進(jìn)制是由1和0兩個(gè)數(shù)字組成的,它可以表示兩種狀態(tài),即開(kāi)和關(guān)。所有輸入電腦的任何信息最終都要轉(zhuǎn)化為二進(jìn)制。目前通用的是ASCII碼。最基本的單位為bit。
二進(jìn)制編碼是用預(yù)先規(guī)定的方法將文字、數(shù)字或其他對(duì)象編成二進(jìn)制的數(shù)碼,或?qū)⑿畔?、?shù)據(jù)轉(zhuǎn)換成規(guī)定的二進(jìn)制電脈沖信號(hào)。
二進(jìn)制編碼的優(yōu)點(diǎn)
?。?)技術(shù)實(shí)現(xiàn)簡(jiǎn)單,計(jì)算機(jī)是由邏輯電路組成,邏輯電路通常只有兩個(gè)狀態(tài),開(kāi)關(guān)的接通與斷開(kāi),這兩種狀態(tài)正好可以用“1”和“0”表示。
?。?)簡(jiǎn)化運(yùn)算規(guī)則:兩個(gè)二進(jìn)制數(shù)和、積運(yùn)算組合各有三種,運(yùn)算規(guī)則簡(jiǎn)單,有利于簡(jiǎn)化計(jì)算機(jī)內(nèi)部結(jié)構(gòu),提高運(yùn)算速度。
?。?)適合邏輯運(yùn)算:邏輯代數(shù)是邏輯運(yùn)算的理論依據(jù),二進(jìn)制只有兩個(gè)數(shù)碼,正好與邏輯代數(shù)中的“真”和“假”相吻合。
?。?)易于進(jìn)行轉(zhuǎn)換,二進(jìn)制與十進(jìn)制數(shù)易于互相轉(zhuǎn)換。
?。?)用二進(jìn)制表示數(shù)據(jù)具有抗干擾能力強(qiáng),可靠性高等優(yōu)點(diǎn)。因?yàn)槊课粩?shù)據(jù)只有高低兩個(gè)狀態(tài),當(dāng)受到一定程度的干擾時(shí),仍能可靠地分辨出它是高還是低。
一位二進(jìn)制代碼叫做一個(gè)碼元,它有0和1兩種狀態(tài).N個(gè)碼元可以有2^n種不同的組合。
每種組合稱為一個(gè)碼字。用不同碼字表示各種各樣的信息,就是二進(jìn)制編碼
5位二進(jìn)制編碼開(kāi)關(guān)
二進(jìn)制有加減 乘除 01101+1111=? 1101-0011=?
BCD碼
BCD碼(Binary-Coded Decimal?)亦稱二進(jìn)碼十進(jìn)數(shù)或二-十進(jìn)制代碼。用4位二進(jìn)制數(shù)來(lái)表示1位十進(jìn)制數(shù)中的0~9這10個(gè)數(shù)碼。是一種二進(jìn)制的數(shù)字編碼形式,用二進(jìn)制編碼的十進(jìn)制代碼。BCD碼這種編碼形式利用了四個(gè)位元來(lái)儲(chǔ)存一個(gè)十進(jìn)制的數(shù)碼,使二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換得以快捷的進(jìn)行。這種編碼技巧最常用于會(huì)計(jì)系統(tǒng)的設(shè)計(jì)里,因?yàn)闀?huì)計(jì)制度經(jīng)常需要對(duì)很長(zhǎng)的數(shù)字串作準(zhǔn)確的計(jì)算。相對(duì)于一般的浮點(diǎn)式記數(shù)法,采用BCD碼,既可保存數(shù)值的精確度,又可免去使電腦作浮點(diǎn)運(yùn)算時(shí)所耗費(fèi)的時(shí)間。此外,對(duì)于其他需要高精確度的計(jì)算,BCD編碼亦很常用。
由于十進(jìn)制數(shù)共有0、1、2、……、9十個(gè)數(shù)碼,因此,至少需要4位二進(jìn)制碼來(lái)表示1位十進(jìn)制數(shù)。4位二進(jìn)制碼共有2^4=16種碼組,在這16種代碼中,可以任選10種來(lái)表示10個(gè)十進(jìn)制數(shù)碼,共有N=16!/[10!*(16-10)?。莸扔?008種方案。常用的BCD代碼列于末。
bcd碼和二進(jìn)制碼有什么區(qū)別
當(dāng)用來(lái)表示十進(jìn)制數(shù)字0——9時(shí),用二進(jìn)制代碼與8421BCD代碼完全相同。而當(dāng)表示的十進(jìn)制數(shù)字大于9時(shí),用二進(jìn)制代碼與8421BCD代碼表達(dá)就完全不同了。用二進(jìn)制表示就是二進(jìn)制數(shù)字安權(quán)重 求和,其值為十進(jìn)制數(shù)字;用8421BCD代碼則是每一位十進(jìn)制數(shù)字都用4位8421BCD代碼表示。如十進(jìn)制數(shù)字15,轉(zhuǎn)化為二進(jìn)制為1111;用8421BCD碼表示為0001 0101。
bcd碼和十六進(jìn)制數(shù)的區(qū)別
程序如下:BINBCD:MOV B, #100 (100作為除數(shù)送入B中) DIV AB (十六進(jìn)制數(shù)除以100)
MOV R3, A (百位數(shù)送r3,余數(shù)放入B中)
MOV A, #10 (分離十位數(shù)與個(gè)位數(shù))
XCH A,B (余數(shù)放入A中,除數(shù)放入B中)
DIV AB (分離出十位在A中,個(gè)位在B中)
SWAP A (十位數(shù)交換到A的高4位)
ADD A,B (十位數(shù)與個(gè)位數(shù)相加送入 A中)
END
1 請(qǐng)問(wèn)這個(gè)程序求解的思路是什么?
2 該程序的第二句“DIV AB”的解釋是十六進(jìn)制數(shù)除以100,可是A中應(yīng)該存放的是一個(gè)八位的二進(jìn)制數(shù),這是怎么回事?
3 最后為什么要十位數(shù)與個(gè)位數(shù)相加,不是要分離十位數(shù)與個(gè)位數(shù)嗎?
乘除法的時(shí)候可以不考慮進(jìn)制的,比如說(shuō) #0FFH這個(gè)十六進(jìn)制數(shù) 存放于A中,#100這個(gè)十進(jìn)制數(shù)放于B中 然后DIV AB 這時(shí) A等于#02H B等于#37H等于55
在然后
假設(shè)A中的數(shù)為 FFH
BINBCD:
MOV B, #100 (B=100,十進(jìn)制100,)
DIV AB (A等于#02H,B等于#37H等于55)
MOV R3, A (A=02H)
MOV A, #10 (A=10=0AH,B=55=37H)
XCH A,B (A=55=37H, B=10=0AH)
DIV AB (A=05H=5 , B=5=05H)
SWAP A (A=50H,B=05H)
ADD A,B (A=55H,這時(shí)十位各位的BCD嗎已經(jīng)求出來(lái)了,將 37H=55轉(zhuǎn)換為55H
END
1 請(qǐng)問(wèn)這個(gè)程序求解的思路是什么?
思路就是對(duì)一個(gè)數(shù)求模和求于來(lái)分離百位十位和個(gè)位
例如168
168/100=1余68
68/10=6余8
8/1=8余0
這樣就分離了百位十位和個(gè)位
2 該程序的第二句“DIV AB”的解釋是十六進(jìn)制數(shù)除以100,可是A中應(yīng)該存放的是一個(gè)八位的二進(jìn)制數(shù),這是怎么回事?
這個(gè)是你沒(méi)理解cpu存數(shù)據(jù)的方式,A中存放的其實(shí)歸根結(jié)底說(shuō)是二進(jìn)制數(shù),機(jī)器只認(rèn)識(shí)二進(jìn)制數(shù),對(duì)這段程序編譯之后我們輸入的十進(jìn)制100也變成二進(jìn)制數(shù)了,我們通常說(shuō)十六進(jìn)制數(shù)是因?yàn)槭M(jìn)制數(shù)和二進(jìn)制數(shù)有位上的對(duì)應(yīng)關(guān)系,比如1100 0110B=C6H 也就是說(shuō)二進(jìn)制數(shù)每4位一段各自寫(xiě)成十六進(jìn)制數(shù)就把二進(jìn)制轉(zhuǎn)換成十六進(jìn)制了。
3 最后為什么要十位數(shù)與個(gè)位數(shù)相加,不是要分離十位數(shù)與個(gè)位數(shù)嗎? 我想如果你清楚BCD碼的含義你就明白了 BCD碼就是用十六進(jìn)制數(shù)來(lái)表示十進(jìn)制的數(shù)
例如:45H是等于十進(jìn)制的69的,但如果你說(shuō)他是BCD碼他就代表十進(jìn)制數(shù)45
這樣你就會(huì)發(fā)現(xiàn)不是每個(gè)十六進(jìn)制數(shù)都是BCD碼的,例如AAH就不是BCD碼,因?yàn)闆](méi)有AA這樣的十進(jìn)制數(shù)
我最后總結(jié)一下,就是我們所說(shuō)的十進(jìn)制數(shù)也好十六進(jìn)制數(shù)也好,歸根到底機(jī)器都是要把他變?yōu)槎M(jìn)制數(shù)的,機(jī)器也只認(rèn)識(shí)二進(jìn)制數(shù),這樣你就好理解了,我們不會(huì)處理不同進(jìn)制數(shù)之間的運(yùn)算,運(yùn)算時(shí)必須要把他轉(zhuǎn)換同進(jìn)制的數(shù),機(jī)器也是這樣,只不過(guò)我們擅長(zhǎng)的是十進(jìn)制的運(yùn)算,而機(jī)器擅長(zhǎng)的是二進(jìn)制運(yùn)算,二進(jìn)制數(shù)位數(shù)多不方便我們就找了一個(gè)幫手十六進(jìn)制數(shù)
評(píng)論