<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)機(jī)器數(shù)及編碼

          單片機(jī)機(jī)器數(shù)及編碼

          作者: 時(shí)間:2011-09-23 來(lái)源:網(wǎng)絡(luò) 收藏
          及其

          1、與真值
          機(jī)器只認(rèn)識(shí)二進(jìn)制數(shù):0、1。
          這是因?yàn)?,電路狀態(tài)常有兩個(gè),如通、斷;高電平、低電平;…可用0、1表示。
          這種0、1、0、1…1在機(jī)器中的表現(xiàn)形式——。一般為8位。

          2、機(jī)器數(shù)的及運(yùn)算

          對(duì)帶符號(hào)數(shù)而言,有原碼、反碼、補(bǔ)碼之分,計(jì)算機(jī)內(nèi)一般使用補(bǔ)碼。

          1)原碼
          將數(shù)“數(shù)碼化”,原數(shù)前“+”用0表示,原數(shù)前“-”用1表示,數(shù)值部分為該數(shù)本身,這樣的機(jī)器數(shù)叫原碼。
          設(shè)X——原數(shù);則[X]原=X(X0)
          [X]原=2n-1–X(X0),n為字長(zhǎng)的位數(shù)。
          如,[+3]原=00000011B
          [-3]原=27-(-3)=10000011B
          0有兩種表示方法:00000000+0
          10000000-0
          原碼最大、最小的表示:+127、-128

          2)反碼
          規(guī)定正數(shù)的反碼等于原碼;負(fù)數(shù)的反碼是將原碼的數(shù)值位各位取反。
          [X]反=X(X0)
          [X]反=(2n–1)+X(X0)
          如,[+4]反=[+4]原=00000100B
          [-4]反=(28–1)+(-5)=11111111-00000101=11111010B
          反碼范圍:-128~+127
          兩個(gè)0;+0——00000000B
          -0——11111111B
          3)補(bǔ)碼
          補(bǔ)碼的概念:現(xiàn)在是下午3點(diǎn),手表停在12點(diǎn),可正撥3點(diǎn),也可倒撥9點(diǎn)。即是說(shuō)-9的操作可用+3來(lái)實(shí)現(xiàn),在12點(diǎn)里:3、-9互為補(bǔ)碼。
          運(yùn)用補(bǔ)碼可使減法 變成加法。
          規(guī)定:正數(shù)的補(bǔ)碼等于原碼。
          負(fù)數(shù)的補(bǔ)碼求法:1)反碼+1
          公 式:[X]補(bǔ)=2n+X(X0)
          如,設(shè)X=-0101110B,則[X]原=10101110B
          則[X]補(bǔ)=[X]反+1=11010001+00000001=11010010B
          如,[+6]補(bǔ)=[+6]原=00000110B
          [-6]補(bǔ)=28+(-6)=10000000–00000110=11111010B
          8位補(bǔ)碼的范圍–128~+127。
          0的個(gè)數(shù):只一個(gè),即00000000
          而10000000B是-128的補(bǔ)碼。
          原碼、反碼、補(bǔ)碼對(duì)照表:表1-2P10

          4)補(bǔ)碼的運(yùn)算
          當(dāng)X≥0時(shí),[X]補(bǔ)=[X]反=[X]原
          [[X]補(bǔ)]補(bǔ)=[X]原
          [X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)
          [X-Y]補(bǔ)=[X+(-Y)]補(bǔ)
          例:已知X=52Y=38求X-Y

          計(jì)算機(jī)在做算術(shù)運(yùn)算時(shí),必需檢查溢出,以防止發(fā)生錯(cuò)誤

          5)運(yùn)算的溢出問(wèn)題

          資 料字長(zhǎng)(位數(shù))有一定限制,所以資料的表示應(yīng)有一個(gè)范圍。
          如字長(zhǎng)8位時(shí);補(bǔ)碼范圍-128~+127
          若運(yùn)算結(jié)果超出這個(gè)范圍,便溢出。
          例:

          錯(cuò):兩個(gè)負(fù)數(shù)相加和為正數(shù)。
          可見(jiàn):結(jié)果正確 (無(wú)溢出)時(shí),Cs+1=Cs
          結(jié)果錯(cuò)誤(溢出)時(shí),Cs+1≠Cs
          溢出判斷:溢出=Cs+1Cs(即結(jié)果是0為無(wú)溢出;1為有溢出)

          十進(jìn)制數(shù)的
          對(duì)機(jī)器:二進(jìn)制數(shù)方便,
          對(duì)人:二進(jìn)制數(shù)不直觀,習(xí)慣于十進(jìn)制數(shù)。
          在編程過(guò)程中,有 時(shí)需要采用十進(jìn)制運(yùn)算,但機(jī)器不認(rèn)識(shí)十進(jìn)制數(shù)。
          怎么辦?
          可以將十進(jìn)制的字符用二進(jìn)制數(shù)進(jìn)行編碼:

          這叫做二進(jìn)制數(shù)對(duì)十進(jìn)制編碼——BCD碼。
          上述每4位二進(jìn)制數(shù)表示一個(gè)十進(jìn)制字符,這4位中各位的權(quán)依次是:
          8、4、2、1——8421BCD碼。
          BCD碼的運(yùn)算:

          (1)BCD碼加法規(guī)則
          兩個(gè)BCD數(shù)相加時(shí),“某位”的和小于10則保持不變;
          兩個(gè)BCD數(shù)相加時(shí),“某位”的和大于9,則和數(shù)應(yīng)加6修正。
          (2)BCD碼減法規(guī)則
          兩個(gè)BCD數(shù)相減時(shí),“某位”的差未發(fā)生借位,則差數(shù)保持不變;
          兩個(gè)BCD數(shù)相減時(shí),“某位”發(fā)生了借位,其差應(yīng)減6修正。
          這里“某位”指BCD數(shù)中的“個(gè)位”、“十位”、“百位”、……

          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();