• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      C程序設(shè)計下整數(shù)取值范圍的擴充和運算的改進(jìn)

      2016-10-10 07:36:46郭建軍
      長治學(xué)院學(xué)報 2016年2期
      關(guān)鍵詞:程序段數(shù)組整數(shù)

      郭建軍

      (長治學(xué)院計算機系,山西長治046011)

      ?

      C程序設(shè)計下整數(shù)取值范圍的擴充和運算的改進(jìn)

      郭建軍

      (長治學(xué)院計算機系,山西長治046011)

      文章介紹了在C語言程序設(shè)計中整數(shù)取值范圍擴充的方法,并對擴充后整數(shù)參加的加、減、乘、除、求余數(shù)運算進(jìn)行了相應(yīng)的改進(jìn),利用改進(jìn)的運算,可以求解數(shù)據(jù)取值超出C語言環(huán)境規(guī)定范圍的問題。

      整數(shù);擴充;運算;改進(jìn);

      1 引言

      目前,C語言已經(jīng)成為大多數(shù)程序設(shè)計者必須掌握的一種程序設(shè)計語言。通過系統(tǒng)的學(xué)習(xí),既可掌握程序設(shè)計的基本算法、編程方法等內(nèi)容,也可通過程序設(shè)計的方法去解決一些具體的問題。但不同的程序設(shè)計系統(tǒng)都有自身規(guī)定,在C語言程序系統(tǒng)下對整數(shù)的運算和取值范圍就有嚴(yán)格的規(guī)定,如果在程序設(shè)計中整數(shù)的取值超出規(guī)定范圍或運算后的值超規(guī)定范圍,運算的結(jié)果就會出現(xiàn)異常。如果在處理實際問題時,整數(shù)的取值超出規(guī)定范圍,就需要對整數(shù)取值進(jìn)行擴充,對參加的運算進(jìn)行改進(jìn),才能得到正確的結(jié)果。

      2 加1 與減1 的變化

      在C語言程序設(shè)計系統(tǒng)下,整數(shù)存儲所占空間的大小是用字節(jié)數(shù)來表的,如VC++6.0下整型int 為4個字節(jié),即32位的二進(jìn)制數(shù)。因為占用內(nèi)存空間的字節(jié)數(shù)是固定的,所以整型int的取值范圍也是固定的。經(jīng)過二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)數(shù)的運算,可計算出整型int的取值范圍為-2147483648~2147483647[1],無符號整型unsigned的取值范圍為0~4294967295[1]。下面程序的執(zhí)行結(jié)果變化就是整數(shù)運算結(jié)果超過取值范圍而造成的。

      程序1:負(fù)整數(shù)加-1變正整數(shù),正整數(shù)加1變負(fù)整數(shù)。

      程序執(zhí)行結(jié)果為:x=-2147483648[2],y=2147483647

      程序2:無符號整數(shù)加1變0,無符號整數(shù)0減1變正數(shù)。

      程序執(zhí)行結(jié)果為:x=0,y=4294967295[2]

      以上第一個程序中變量x,y的取值,恰好是整型int的最大值和最小值,第二個程序中變量x,y的取值,恰好是無符號整型unsigned的最大值和最小值。在進(jìn)行加1和減1運算后,運算的值超過了規(guī)定的范圍,因此才有了上面程序執(zhí)行后的輸出結(jié)果。

      3 整數(shù)取值范圍擴充

      在處理具體問題時,如果用到的整數(shù)比較大,肯定會超出C語言程序設(shè)計環(huán)境下規(guī)定的范圍,如果不對數(shù)據(jù)取值范圍進(jìn)行擴充,不對數(shù)據(jù)參加的運算作相應(yīng)的改進(jìn),計算的結(jié)果就會異常,即程序運行輸出錯誤的結(jié)果,實際問題得不到解決。

      3.1整數(shù)取值范圍的擴充

      C語言程序設(shè)計下的構(gòu)造型數(shù)據(jù)類型數(shù)組[3],一經(jīng)定義,數(shù)組中的元素有統(tǒng)一的數(shù)據(jù)類型,且占有連續(xù)的存儲單元,可用下標(biāo)引用元素。由于數(shù)組具有這些特點,所以可用數(shù)組擴充整數(shù)的取值范圍。程序中定義字符型一維數(shù)組和整型一維數(shù)組,定義多少個元素,就可存放多少位數(shù),用整體輸入字符串的函數(shù)gets()從鍵盤一次輸入一個整數(shù),存入字符型數(shù)組中。為了使保存在字符串中的整數(shù)能參加運算,還需經(jīng)過字符變數(shù)字的轉(zhuǎn)換[3],然后存放到一維整型數(shù)組中,其中用下標(biāo)為0的元素存放個位上的數(shù)字,下標(biāo)為1的元素存放十位上的數(shù)字,以此類推。

      3.2數(shù)字字符串轉(zhuǎn)換為整數(shù)程序段

      通過以上程序段,可以把數(shù)字字符串表示的整數(shù)轉(zhuǎn)換為數(shù)字,并按下標(biāo)為0的元素存放個位上數(shù)字的規(guī)律存入一維整型數(shù)組中。

      4 整數(shù)運算的改進(jìn)

      把字符型的一維數(shù)組轉(zhuǎn)換為整數(shù)后,相等于把一個整數(shù)的各位數(shù)字進(jìn)行了分離,利用C語言程序設(shè)計環(huán)境提供的+、-、*、/、%基本算術(shù)運算,對各位數(shù)字做相應(yīng)的運算,就可對整數(shù)的加、減、乘、除、求余數(shù)運算進(jìn)行改進(jìn)。

      4.1加減法運算的改進(jìn)

      以計算機組成原理中二進(jìn)制數(shù)全加器設(shè)計原理為基礎(chǔ)[2],可對整數(shù)加法進(jìn)行擴充。因整數(shù)中的各位數(shù)字分別存放在相應(yīng)的下標(biāo)變量中,各位相加時,用一個變量記錄向上進(jìn)位的數(shù)字,上一位相加時,要加上向上進(jìn)位的數(shù)字,其實就是用數(shù)組元素模擬傳統(tǒng)的豎式計算兩個整數(shù)的加法。

      加法運算改進(jìn)程序段:

      有了加法運算的程序,在此基礎(chǔ)上很容易擴充減法運算,只是在對應(yīng)的位上數(shù)字不夠減時,要考慮向高一位借位。如高一位是零時,還需向該位的高一位借位,直到借到不是零的高位,這樣一位一位地減,最后完成兩個數(shù)的減法運算,與加法運算一樣,也是用數(shù)組元素模擬傳統(tǒng)的豎式來計算減法。

      加法和減法運算改進(jìn)后,為乘法的運算的改進(jìn)打下了基礎(chǔ),由于篇幅有限具體的方法和實現(xiàn)運算的程序這里不再贅敘。

      4.2求除法、余數(shù)運算方法的改進(jìn)

      求除法、余數(shù)運算的方法比較特殊,以求余數(shù)為例,是從被除數(shù)的高位起來求余數(shù)。如求4147被3除的余數(shù),從最高位開始,4被3除余1,然后借位給低位,下一位是1,加上高一位的借位就是1× 10+1=11,11被3除余數(shù)是2,繼續(xù)借位給下一位4,加上高一位的借位就是2×10+4=24,24被3除余數(shù)是0,繼續(xù)借位給下一位7,加上高一位的借位就是0×10+7=7,7被3除余數(shù)是1,因為7是最后一位,沒有借位了,最后的余數(shù)1就是4147被3除的余數(shù)。以上求余數(shù)的過程,通過編程,完全可以實現(xiàn)。

      求余數(shù)運算改進(jìn)程序段:

      上述求余數(shù)的計算過程中,如果把每一步求余數(shù)時所得的商按從高位到低位存入一個整型數(shù)組中保存起來,就可得到兩個整數(shù)相除所得的商,實現(xiàn)除法運算,一舉兩得。

      5 結(jié)束語

      程序是計算機的靈魂,雖然程序設(shè)計語言環(huán)境提供的一些內(nèi)容是受限制的,但程序設(shè)計方法是靈活和多樣的。只要善于應(yīng)用程序設(shè)計語言下的各種數(shù)據(jù)表示形式,再與相應(yīng)的算法相結(jié)合,就能編寫出解決實際問題的程序,使得在程序設(shè)計下類似于加1與減1的計算結(jié)果變得不再那么神秘和不可思議。

      [1]顏盟盟.Visual C++從入門到精通.[M].第1版.北京:化學(xué)工業(yè)出版社,2009-08.21-22.

      [2]袁春風(fēng).計算機組成與系統(tǒng)結(jié)構(gòu).[M].第1版.北京:清華大學(xué)出版社,2010-04.37-36,78-79.

      [3]田淑清.全計算機等級考試二級教程—C語言程序設(shè)計[M].第1版.北京:高等教育出版社,2013-05.68-69,141-143.

      (責(zé)任編輯張劍妹)

      TP391

      A

      1673-2014(2016)02-0064-03

      2015—11—07

      郭建軍(1957—),男,山西長治人,副教授,主要從事計算機應(yīng)用開發(fā)研究。

      猜你喜歡
      程序段數(shù)組整數(shù)
      基于WinCC的物料小車控制系統(tǒng)設(shè)計與仿真
      電動工具(2022年2期)2022-05-18 08:40:38
      JAVA稀疏矩陣算法
      電腦報(2022年13期)2022-04-12 00:32:38
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      電腦報(2020年24期)2020-07-15 06:12:41
      數(shù)控系統(tǒng)手輪回退功能的研究與實現(xiàn)*
      基于NC程序段的提高數(shù)控加工監(jiān)控閾值與信號同步的方法*
      一類整數(shù)遞推數(shù)列的周期性
      聚焦不等式(組)的“整數(shù)解”
      尋找勾股數(shù)組的歷程
      VB數(shù)組在for循環(huán)中的應(yīng)用
      考試周刊(2012年88期)2012-04-29 04:36:47
      如何處理Java程序中的錯誤
      开江县| 石嘴山市| 汉阴县| 永胜县| 肇东市| 澳门| 醴陵市| 康定县| 东丰县| 岳池县| 钟祥市| 建始县| 防城港市| 桑日县| 仪征市| 九台市| 抚顺市| 罗城| 花莲市| 尉犁县| 康马县| 古交市| 思茅市| 北宁市| 海阳市| 旌德县| 阳城县| 莫力| 新丰县| 和龙市| 玉树县| 遂平县| 平山县| 田林县| 正定县| 门头沟区| 北碚区| 长沙县| 巴南区| 元朗区| 铜鼓县|