導航:首頁 > 源碼編譯 > c語言中各種進制的演算法

c語言中各種進制的演算法

發布時間:2024-05-26 21:31:47

『壹』 c語言:寫一個程序完成二進制與十進制,十進制與十六進制之間的轉換。

計算機中常用的數的進制主要有:二進制、八進制、十六進制,學習計算機要對其有所了解。2進制,用兩個阿拉伯數字:0、1;8進制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;10進制,用十個阿拉伯數字:0到9;16進制就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。以下簡介各種進制之間的轉換方法:一、二進制轉換十進制例:二進制「1101100」1101100←二進制數6543210←排位方法例如二進制換算十進制的演算法:1*26+1*25+0*24+1*23+1*22+0*21+0*20↑↑說明:2代表進制,後面的數是次方(從右往左數,以0開始)=64+32+0+8+4+0+0=108二、二進制換算八進制例:二進制的「10110111011」換八進制時,從右到左,三位一組,不夠補0,即成了:010110111011然後每組中的3個數分別對應4、2、1的狀態,然後將為狀態為1的相加,如:010=2110=4+2=6111=4+2+1=7011=2+1=3結果為:2673三、二進制轉換十六進制十六進制換二進制的方法也類似,只要每組4位,分別對應8、4、2、1就行了,如分解為:010110111011運算為:0101=4+1=51011=8+2+1=11(由於10為A,芹敗所以11即B)1011=8+2+1=11(由於10為A,所以11即B)結果為:5BB四、二進制數轉換為十進制數二進制數第0位的權值是2的0次方,第1位的權值是2的1次方……所以,設有一個二進制數:01100100,轉換為10進制為:計算:0*20+0*21+1*22+0*23+0*24+1*25+1*26+0*27=100五、八進制數轉換為十進制數八進制就是逢8進1。八進制數採用0~7這八數來表達一個數。八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方……所以,設有一個八進制數:1507,轉換為十進制為:計算:7*80+0*81+5*82+1*83=839結果是,八進制數1507轉換成十進制數為839六、十六進制轉換十進制例:2AF5換算成10進制直接計算就是:5*160+F*161+A*162+2*163=10997(別忘了,在上面的計算中,A表示10,而F表示15)、現在可以看出,所有進制換算成10進制,關鍵在於各自的權值不同。假設有人問你,十進數1234為什麼是一千二百三十四?你盡可以給他這么一個算式:1234=1*103+2*102+3*101+4*100十進制與二進制轉換之相互演算法十進制轉二進制:用2輾轉相除至結果為1將余數和最後的1從下向上倒序寫就是結果例如302302/2=151餘0151/2=75餘175/2=37餘137/2=18餘118/2=9餘09/2=4餘14/2=2餘02/2=1餘0故二進制為100101110二進制轉十進制從最後一位開始算,依次列為第0、1、2位第n位的數(0或1)乘以2的n次方得到的結果相加就是答案例如:01101011.轉十進制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然後:1+2+0+8+0+32+64+0=107.二進制01101011=十進制107.一、二進制數轉換成十進制數由二進制野首灶數轉換成十進制數的基本做法是,把二進制數頌扮首先寫成加權系數式,然後按十進制加法規則求和。這種做法稱為"按權相加"法。二、十進制數轉換為二進制數十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。1.十進制整數轉換為二進制整數十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。2.十進制小數轉換為二進制小數十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。1.二進制與十進制的轉換(1)二進制轉十進制方法:"按權求和"例:(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(8+0+2+1+0+0.25)10=(11.25)10(2)十進制轉二進制·十進制整數轉二進制數:"除以2取余,逆序輸出"例:(89)10=(1011001)2289244……1222……0211……025……122……121……00……1·十進制小數轉二進制數:"乘以2取整,順序輸出"例:(0.625)10=(0.101)20.625X21.25X20.5X21.02.八進制與二進制的轉換例:將八進制的37.416轉換成二進制數:37.416011111.100001110即:(37.416)8=(11111.10000111)2例:將二進制的10110.0011轉換成八進制:010110.00110026.14即:(10110.011)2=(26.14)83.十六進制與二進制的轉換例:將十六進制數5DF.9轉換成二進制:5DF.9010111011111.1001即:(5DF.9)16=(10111011111.1001)2例:將二進制數1100001.111轉換成十六進制:01100001.111061.E即:(1100001.111)2=(61.E)16

『貳』 C璇璦鍏榪涘埗,鍗佽繘鍒,鍗佸叚榪涘埗鐨勫叕寮忔槸浠涔

姣斿傝村惂10=2鐨勪笁嬈℃柟鍔2鐨勪竴嬈℃柟錛屾墍浠10鐨勪簩榪涘埗灝辨槸110錛屽氨鏄絎涓変綅錛堜粠鍙沖線宸︼級涓婃槸1錛屽氨鏄2鐨勪笁嬈℃柟涔1錛岀浜屼綅鏄1錛屽氨鏄2鐨勫鉤鏂逛箻1錛屼緷嬈$被鎺ㄣ傘傘傚湪姣斿25涓2鐨勫洓嬈″姞2鐨勪笁嬈″姞2鐨0嬈★紝鎵浠ュ氨涓1101銆
鍏榪涘埗涔熸槸榪欎箞綆楃殑錛屾瘮濡傝30灝辨槸8鐨勪竴嬈℃柟鐨3鍊嶅姞8鐨0嬈$殑6鍊嶏紝灝辨槸36錛堝叓榪涘埗錛夛紱
鍗佸叚鍛㈡槸1.2.3.4.5.6.7.8.9.10.A.B.C.D.E.F銆傘傘
A.B.C.D.E.F.瀵瑰簲鐫11.12.13.14.15.16錛岀畻娉曟槸涓鏍風殑銆傘備笉浼氬彲浠ュ湪闂鎴

『叄』 C璇璦榪涘埗杞鎹

璁$畻鏈轟腑甯哥敤鐨勬暟鐨勮繘鍒朵富瑕佹湁錛氫簩榪涘埗銆佸叓榪涘埗銆佸嶮榪涘埗銆佸嶮鍏榪涘埗銆  

2榪涘埗錛岀敤涓や釜闃挎媺浼鏁板瓧錛0銆1錛  

8榪涘埗錛岀敤鍏涓闃挎媺浼鏁板瓧錛0銆1銆2銆3銆4銆5銆6銆7錛  

10榪涘埗錛岀敤鍗佷釜闃挎媺浼鏁板瓧錛0鍒9錛  

16榪涘埗灝辨槸閫16榪1錛屼絾鎴戜滑鍙鏈0~9榪欏嶮涓鏁板瓧錛屾墍浠ユ垜浠鐢ˋ錛孊錛孋錛孌錛孍錛孎榪欎簲涓瀛楁瘝鏉ュ垎鍒琛ㄧず10錛11錛12錛13錛14錛15銆傚瓧姣嶄笉鍖哄垎澶у皬鍐欍 

涓嬮潰鐢ㄤ綑鏁扮煭闄ゆ硶鎶婂嶮榪涘埗鏁拌漿鍖栦負浜岃繘鍒舵暟涓轟緥榪涜岃存槑

1銆佹槑紜闂棰樸備婦涓渚嬪瓙錛屾垜浠鐜板湪鏄瑕佸皢涓涓鍗佽繘鍒舵暟瀛156杞鎹㈡垚浜岃繘鍒舵暟瀛椼傚厛灝嗚繖涓鍗佽繘鍒舵暟浣滀負琚闄ゆ暟鍐欏湪涓涓鍊掔潃鐨勨滈暱闄ゆ硶鈥濈殑絎﹀彿閲屻傛妸鐩鏍囨暟緋葷殑鍩烘暟錛堝湪榪欓噷浜岃繘鍒舵槸鈥2鈥濓級浣滀負闄ゆ暟鍐欏湪榪欎釜闄ゆ硶絎﹀彿鐨勫栭潰銆傜敤榪欎釜鏂規硶灝嗚$畻榪囩▼鍙瑙嗗寲浼氭洿鏂逛究鐞嗚В錛屽洜涓烘暣涓璁$畻榪囩▼鍙闇灝嗘暟瀛椾竴鐩撮櫎浠2銆

媧葷敤榪欎釜鏂規硶鍙浠ュ皢鎵鏈夊嶮榪涘埗鏁板瓧杞鎹㈡垚浠諱綍榪涘埗琛ㄨ揪銆傞櫎鏁頒負2鏄鍥犱負鎴戜滑鏈緇堟兂寰楀埌鐨勪互2涓哄熀鏁扮殑鏁幫紙鍗充簩榪涘埗鏁板礆級 銆傚傛灉鏈緇堟兂寰楀埌鍏朵粬鏁扮郴鐨勬暟瀛楋紝鐢ㄧ洰鏍囨暟緋葷殑鍩烘暟浠f浛榪欎釜鏂規硶閲屼簩榪涘埗鐨勫熀鏁2 灝卞彲浠ヤ簡銆備緥濡傦紝瑕佸緱鍒板熀鏁頒負9鐨勬暟錛屽氨鐢9鏉ヤ唬鏇2浣滀負闄ゆ暟 銆傛渶緇堢殑緇撴灉灝辨槸鐩鏍囨暟緋葷殑鏁板瓧琛ㄨ揪銆

鎵╁睍璧勬枡錛

鍗佽繘鍒--->浜岃繘鍒

瀵逛簬鏁存暟閮ㄥ垎錛岀敤琚闄ゆ暟鍙嶅嶉櫎浠2錛岄櫎絎涓嬈″栵紝姣忔¢櫎浠2鍧囧彇鍓嶄竴嬈″晢鐨勬暣鏁伴儴鍒嗕綔琚闄ゆ暟騫朵緷嬈¤頒笅姣忔$殑浣欐暟銆傚彟澶栵紝鎵寰楀埌鐨勫晢鐨勬渶鍚庝竴浣嶄綑鏁版槸鎵奼備簩榪涘埗鏁扮殑鏈楂樹綅銆

瀵逛簬灝忔暟閮ㄥ垎錛岄噰鐢ㄨ繛緇涔樹互鍩烘暟2錛屽苟渚濇″彇鍑虹殑鏁存暟閮ㄥ垎錛岀洿鑷崇粨鏋滅殑灝忔暟閮ㄥ垎涓0涓烘銆傛晠璇ユ硶縐扳滀箻鍩哄彇鏁存硶鈥

鍗佽繘鍒--->鍏榪涘埗

10榪涘埗鏁拌漿鎹㈡垚8榪涘埗鐨勬柟娉曪紝鍜岃漿鎹涓2榪涘埗鐨勬柟娉曠被浼礆紝鍞涓鍙樺寲錛氶櫎鏁扮敱2鍙樻垚8銆

鍙傝冭祫鏂欙細鐧懼害鐧劇戔斺旇繘鍒惰漿鎹

『肆』 C語言中八進制和16進制怎麼表示

一、八進制由 0~7 八個數字組成,使用時必須以0開頭(注意是數字 0,不是字母 o),例如:

//合法的八進制數

int a = 015; //換算成十進制為 13

int b = -0101; //換算成十進制為 -65

int c = 0177777; //換算成十進制為 65535

//非法的八進制

int m = 256; //無前綴 0,相當於十進制

int n = 03A2; //A不是有效的八進制數字

二、十六進制由數字 0~9、字母 A~F 或 a~f(不區分大小寫)組成,使用時必須以0x或0X(不區分大小寫)開頭,例如:

//合法的十六進制int a = 0X2A; //換算成十進制為 42

int b = -0XA0; //換算成十進制為 -160

int c = 0xffff; //換算成十進制為 65535

//非法的十六進制

int m = 5A; //沒有前綴 0X,是一個無效數字

int n = 0X3H; //H不是有效的十六進制數字

二進制化為八進制

整數部份從最低有效位開始,以3位一組,最高有效位不足3位時以0補齊,每一組均可轉換成一個八進制的值,轉換完畢就是八進制的整數。

小數部份從最高有效位開始,以3位一組,最低有效位不足3位時以0補齊,每一組均可轉換成一個八進制的值,轉換完畢就是八進制的小數。

例:(11001111.01111)2 = (011 001 111.011 110)2 = (317.36)8

以上內容參考:網路-八進制

閱讀全文

與c語言中各種進制的演算法相關的資料

熱點內容
oppor系列如何解除應用加密 瀏覽:599
程序員那麼可愛姜逸城初戀 瀏覽:496
modbustcp編程 瀏覽:491
實況為什麼安卓看不了 瀏覽:129
Java多線程Queue 瀏覽:95
雲伺服器499元三年 瀏覽:980
nbd源碼 瀏覽:847
x86在arm上編譯 瀏覽:8
linux怎麼配置網路 瀏覽:307
程序員想要的小禮物 瀏覽:187
java獲取網頁url 瀏覽:625
怎麼做解壓神器泡泡版 瀏覽:967
自己動手做一個c編譯器 瀏覽:930
手機如何鏈接谷歌伺服器地址 瀏覽:137
廢掉一個程序員的武功 瀏覽:249
java樹形演算法 瀏覽:642
通達信加鎖指標源碼怎麼看 瀏覽:755
將同名文件移動到部分同名文件夾 瀏覽:404
擺盪指標加壓力線源碼 瀏覽:916
新一代單片機特徵 瀏覽:770