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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 第23節(jié):變量都轉(zhuǎn)換成unsigned long數(shù)據(jù)類型

          第23節(jié):變量都轉(zhuǎn)換成unsigned long數(shù)據(jù)類型

          作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
          從業(yè)十年,教你單片機(jī)入門 第23講:

          不管是以前講的加法,現(xiàn)在講的減法,還是未來講的乘法和除法,我都會(huì)強(qiáng)烈建議“請(qǐng)把所有參與運(yùn)算的變量都轉(zhuǎn)成unsigned long類型”。unsigned long變量是三種數(shù)據(jù)類型中取值范圍最大的數(shù),取值范圍可達(dá)0到4294967295之間,用了此類型變量的運(yùn)算,不會(huì)輕易導(dǎo)致運(yùn)算溢出的問題。有細(xì)心讀者會(huì)問,萬一數(shù)據(jù)超過了4294967295怎么辦?答:可用BCD碼的數(shù)組方式進(jìn)行運(yùn)算。這種數(shù)組運(yùn)算的方法我在《從業(yè)將近十年,手把手教你單片機(jī)程序框架》里用了好幾個(gè)章節(jié)跟大家介紹過,初學(xué)者暫時(shí)不用深入學(xué)習(xí)它。

          本文引用地址:http://www.ex-cimer.com/article/201611/319832.htm

          變量轉(zhuǎn)換的方法是引入中間變量,有多少個(gè)需要轉(zhuǎn)換的變量就引入多少個(gè)中間變量,請(qǐng)看下面這個(gè)例子。

          轉(zhuǎn)換之前:

          unsigned int a;

          unsigned char x=195;

          unsigned long y=101;

          a=x-y;

          分析:上述公式用到3個(gè)變量,其中a和x都不是unsigned long變量,因此需要為它們分別引入中間變量t和s。

          轉(zhuǎn)換之后:

          unsigned int a;

          unsigned char x=195;

          unsigned long y=101;

          unsigned long t; //引入的中間變量,用來替代a

          unsigned long s; //引入的中間變量,用來替代x。

          s=0; //s在接收x原數(shù)據(jù)之前先把高位和低位全部清零。因?yàn)閟和x的數(shù)據(jù)寬度不一。

          s=x; //接收x原數(shù)據(jù),相當(dāng)于把x轉(zhuǎn)換成unsigned long中間變量。

          t=s-y; //此處的t就默認(rèn)代表了變量a。

          本章雖短,但是此方法在實(shí)際項(xiàng)目中很重要,大家不可大意。

          下節(jié)預(yù)告:乘法運(yùn)算的5種常見格式。



          評(píng)論


          技術(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); })();