青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C/C++圖形圖像的世界

圖形與游戲編程

常用鏈接

統計

積分與排名

Blog

最新評論

傻瓜學習C語言進制轉換

最近受網友的邀請,就寫一篇入門的教學文章。不過對于已經有一定實力水平的人來說,入門級的東西反而對于他(她)們來說不容易解釋清楚,我也想挑戰一下自己,看看我能把一些基礎問題怎么解釋能讓智商80的人也能看明白(雖然這樣說有點夸張),所以文章的標題就叫做“傻瓜學習C語言進制轉換”,不過也不是沒有要求的,要求是,看本文的時候,請你一定要按順序看,并且要確定你會寫這樣一個c程序:輸入一個int,分解出它的個位,十位,百位(提示:要用’%'求模運算和’/'整除運算)。。。。。。

1.數值與進制
數值與進制是兩個不同的東西。數值是什么?100,200這種并不是數值。
什么是數值?古代的時候,人們記數,有一個物品就記一塊石頭,或者有11個物品,就打11個繩結,這就是數值,如果你要表示1000,那你還真的需要打1000個繩結來表示??蓡栴}就是,這樣子你會累死,為了不用累死,于是他們發明了另一種表達方式:準備兩種不同的石頭A和B,有一個,那就用一塊A石頭表示,兩個就用兩塊A表示,如果太多了,比如10個,就用一塊B石頭來表示有10個A石頭,比如AAAAABB表示25個。但是,如果表達的數值更大,那就再多準備一種石頭C,每10個B石頭就用一個C石頭來表示,比如AABCC表示212。于是,這樣就可以大大減少所需要的石頭的數目,而這,就是進制。
進制是數值的一種表示方式

2.數值與進制的轉化
進制是為了表示一個數值,如果是每10個進一,那么就是我們熟悉的10進制,否則,如果是每k個進一,那就是k進制,比如我們的時間,是每60秒記1分鐘,這就是60進制。然后,怎么把一個用特定進制的表示,得到它的數值呢?很簡單,比如上文說的AABCC,首先,有兩個A,分解得AA + BCC,就是2 + BBC,然后,1個B就是10個A,于是就是AA + AAAAAAAAAA + AAAAAAAAAA + C,然后一個C等于10個B,就是AA + AAAAAAAAAA + AAAAAAAAAA + BBBBBBBBBB,這樣一直拆下去,直到全部是A為止,你就得到實際的數值了,實際的數值就是A的個數,記住這一點,數值和進制是兩碼事。

然后,反過來,怎么把一個數值轉化為特定進制呢?很簡單,按照進制的定義,比如現在有數值AAAAAAAAAAAAAAAAAAAAAAA,然后,要轉成10進制,那么我們每10個分一分組:AAAAAAAAAA + AAAAAAAAAA + AAA,然后,把10個A用B來表示,得到:B + B + AAA,如果B有10個,那再把它換成C表示。那么,如果你明白了以上方法,你就得到一個最基本的進制轉換手段,就是先化為數值,再重新用另一個進制表示。比如10進制的13,要化成二進制,那么,就是BAAA -> AAAAAAAAAAA -> AA AA AA AA AA AA A 這時,換一個符號,每兩個A用一個M表示,那么就是MM MM MM A,再每兩個M用一個N表示,得到NN N A,再每兩個N用一個P表示,得到P N A。而在這里,一個P等于8個A,一個N等于4個A,所以P + N + A你可以驗算出8 + 4 + 1,等于原來的數值。而這種表示方法,就和羅馬數字很相似,羅馬數字里,用I表示1,用V表示5,用X表示10,于是18就用XVIII表達,用一個字母多次重復來表達一個數值。

后來,為了能更方便書寫,因為字母數量是有限的,無法表達更大的數字,書寫方式改用阿拉伯數字寫在不同的位置來表達,于是就是我們今天的10進制數字。比如剛剛的例子,BAAA,有一個B,于是在十位寫1,然后有三個B,在個位寫3,也就是B的個數,組合起來就是13,這是十進制的情況。如果是二進制,剛剛我們得到的結果是PNA,注意這里沒有M,相當于0個,而如果我們用二進制寫,那就有四個位,個位有一個A,記1,第二位相當于M的個數,是0,組合起來是01,第三位是N,記1,組合是101,第四位有一個P,再組合就是1101,于是這就是10進制的13,化為二進制的結果。

3.進制的特點
問你,3638除以10的余數是多少?給你一秒種思考時間,多少?如果這個你不能馬上說出來,那你就要反省了。結果應該是8,直接看個位不就對了。那么3638除以10的商呢?再給你一秒。。。。。。。。。。。。。。。。。。。這個答錯的話要重讀小學了,答案當然是363.8,如果把這個數取整,不要小數部分,那就是363。小學的時候你就應該知道,對一個數乘以10或者除以10這種計算是超簡單的,因為我們用的是10進制。類似的,問一下你,經過60個5秒是多少分鐘多少秒?再給你一秒思考時間,要毫不猶豫的回答我。你可別去計算60*5=300,這是多余的。答案是5分鐘,時間我們用的60進制,那么乘以60只要改一下單位就足夠了,肯定是對的。再問你,10分鐘分成60份是多少秒?你必須立即回答我是10秒。
我們推廣到任意k進制,按這個特點,k進制下,乘以k或者除以k的運算是超級簡單的,比如8進制的123,乘以8肯定是1230,除以8就是12.3,相當于在移動小數點而已。于是,k進制下乘除k就是移動小數點。而除以k求余數的話,像剛剛的8進制的123除以8,就等于12余3,就是要得到個位上的數字,同時得到原來的數舍棄掉個位的結果。這個性質非常的重要!除法的本質是什么?其實除以k是得到被除數在k進制下的個位數(余數),和小數點左移的結果(商)。

4. C下實現數值轉化為進制
好,現在回到程序,給你一個int n,要把它的各位上的數字取出來,按上面的性質,那就很簡單了,先得到個位,n%10(這個’%'是求余運算),然后小數點左移,n = n / 10; 然后不斷循環這個過程,如下代碼:

int n = 2456;
while (n > 0)
{
    printf("%d,", n % 10);
    n = n / 10;
}

輸出結果是”6,5,4,2,”,好好領悟一下這段代碼。給你五分鐘時間。每一次%10就是取出個位,每一次/10就是丟掉個位。
而如果把輸出的結果里的數字,逆過來看,就是”2456″。

在這里,那個int所表示的,就是一個數值,剛剛我們的代碼所做的事就是把這個數值,一位一位的分解出來。
而事實上,這個過程就是把數值轉化為特定進制的過程。剛剛就是把數值轉化為10進制。
如果把剛剛的代碼改為:

int n = 13;
while (n > 0)
{
    printf("%d,", n % 2);
    n = n / 2;
}

沒錯,輸出結果是”1,0,1,1″,就是剛剛把13化為二進制的例子,每一次%2就是取出二進制下的個位,每一次/2就是丟掉二進制下的個位。
只要把那個次序反過來,就得到1101,就是13化為二進制的結果。在你真正搞明白了除法的本質后,那么,數值轉化為以k進制表示那是一件很簡單的事。

5. 進制轉化為數值
這部分我不打算講,很多人對這個比起前面的內容來說容易理解很多,直接用進制的定義就已經很好辦了,沒什么太難理解的東西。

6. 作業
編寫一個程序,輸入三個整數n A B,表示把A進制的n,轉換為B進制,并輸出。
樣例:
輸入 輸出
11 8 10 9
129 10 2 10000001
22 3 6 12

假定輸入的A和B都在2-10這個范圍,超出范圍的不用去處理,輸入的n保證在int范圍內。

posted on 2011-12-27 01:41 御坂美琴 閱讀(1470) 評論(1)  編輯 收藏 引用

評論

# re: 傻瓜學習C語言進制轉換 2011-12-27 02:21 OwnWaterloo

炮姐好……  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲福利电影| 欧美小视频在线| 亚洲国产一成人久久精品| 久久精品免费看| 欧美伊久线香蕉线新在线| 在线亚洲一区二区| 在线视频日韩精品| 午夜宅男欧美| 久久久国产精品一区二区中文| 久久精品国产欧美激情| 久久精品视频在线播放| 久久亚洲影院| 欧美电影专区| 亚洲欧洲一区二区三区久久| 亚洲区一区二| 亚洲一区视频在线| 久久精品国产91精品亚洲| 久久综合五月天婷婷伊人| 欧美激情精品久久久久| 国产精品久久久久久一区二区三区| 国产精品老牛| 亚洲国产精品一区二区www在线| 亚洲精品网址在线观看| 亚洲一区视频在线观看视频| 久久av一区二区三区亚洲| 蜜桃av综合| 亚洲深夜福利视频| 久久久久久精| 欧美日韩精品一区二区三区| 国产视频综合在线| 一本久久综合亚洲鲁鲁五月天| 亚洲欧美一区二区三区极速播放| 久久美女性网| 日韩视频一区| 久久久噜噜噜久噜久久 | 免费在线成人av| 亚洲狠狠丁香婷婷综合久久久| 亚洲色图制服丝袜| 免费91麻豆精品国产自产在线观看| 欧美色图五月天| 亚洲三级免费电影| 久久午夜激情| 亚洲一区亚洲二区| 欧美金8天国| 一区国产精品| 久久精品亚洲乱码伦伦中文| 夜色激情一区二区| 鲁大师成人一区二区三区| 国产精品实拍| 一本色道久久综合亚洲精品不卡| 久久久亚洲国产天美传媒修理工| 亚洲理论在线观看| 欧美猛交免费看| 日韩一级片网址| 久久久久久久久久久久久久一区| 亚洲电影自拍| 久久久久久久91| 国内外成人在线| 欧美一区二区在线免费观看 | 另类激情亚洲| 欧美一区二区三区视频在线| 国产精品高潮呻吟久久av无限 | 欧美mv日韩mv国产网站app| 国产一区二区丝袜高跟鞋图片| 午夜精品视频在线观看| 中国成人黄色视屏| 国产精品爽黄69| 久久精品色图| 久久久久青草大香线综合精品| 狠狠色丁香婷婷综合| 久久躁日日躁aaaaxxxx| 久久久久看片| 亚洲免费高清视频| 99国内精品久久| 国产美女诱惑一区二区| 久久精品123| 久久免费偷拍视频| 亚洲人体大胆视频| 99热这里只有精品8| 国产精品久久99| 欧美在线观看一区二区| 久久一区二区三区四区五区| 亚洲人www| 99在线|亚洲一区二区| 国产精品美女一区二区在线观看| 午夜视频一区在线观看| 久久精品一区蜜桃臀影院| 亚洲区第一页| 亚洲尤物精选| 亚洲国产91| 中日韩在线视频| 黄色成人在线免费| 亚洲免费观看在线视频| 国产精品夜夜夜| 欧美jizzhd精品欧美巨大免费| 欧美寡妇偷汉性猛交| 午夜精品视频在线| 免费不卡亚洲欧美| 小黄鸭视频精品导航| 久久久久国产一区二区三区四区 | 在线精品视频一区二区三四| 亚洲片在线观看| 国产一区二区三区四区三区四 | 亚洲国产女人aaa毛片在线| 欧美日韩在线一区二区三区| 久久久久网站| 欧美激情一区二区三区成人| 久久爱www.| 国产一区二区精品丝袜| 玖玖精品视频| 欧美日韩视频在线| 久久人人爽人人爽爽久久| 欧美激情视频一区二区三区在线播放| 亚洲一区精品电影| 免费不卡中文字幕视频| 久久精品成人| 欧美午夜久久久| 亚洲高清二区| 国产午夜精品美女视频明星a级 | 午夜精品久久久久久| 亚洲经典在线看| 欧美一区二区三区免费看 | 亚洲第一偷拍| 国产欧美日韩一区二区三区在线观看 | 欧美激情精品| 国产伦精品一区二区三区视频黑人 | 欧美影院成人| 欧美精品久久天天躁| 蜜臀久久久99精品久久久久久| 国产精品久久久久毛片软件| 亚洲国产精品尤物yw在线观看| 国产一区二区激情| 制服丝袜激情欧洲亚洲| 在线一区观看| 欧美日韩一二三区| 亚洲精品日日夜夜| 一个色综合导航| 欧美精品亚洲二区| 亚洲第一二三四五区| 亚洲国产另类 国产精品国产免费| 久久se精品一区二区| 欧美一区二区三区免费观看| 国产精品久久久久久影视| 亚洲夜间福利| 欧美在线一二三| 国产午夜精品一区二区三区视频| 亚洲视频第一页| 亚洲欧美国产高清| 国产区在线观看成人精品| 亚洲免费影视第一页| 欧美一级片久久久久久久| 国产精品一区毛片| 性欧美暴力猛交69hd| 久久夜色精品| 亚洲国产日韩欧美在线图片| 欧美jizz19性欧美| 亚洲激情自拍| 亚洲免费视频在线观看| 国产精品久久久久久久久借妻 | 亚洲乱码国产乱码精品精| 久久久亚洲一区| 欧美电影免费观看| 99精品国产在热久久| 欧美日韩午夜激情| 亚洲制服丝袜在线| 久久亚洲精品一区| 亚洲清纯自拍| 国产精品高潮呻吟视频| 性久久久久久久久久久久| 欧美成ee人免费视频| 99成人在线| 国产精品永久免费| 久久综合狠狠综合久久综青草| 欧美国产高清| 一区二区三区免费观看| 国产日韩欧美91| 麻豆国产精品777777在线| 99国产精品久久久| 久久婷婷一区| 一本一本久久a久久精品综合妖精| 国产精品一区在线观看你懂的| 久久米奇亚洲| 亚洲毛片在线| 久久久久久久欧美精品| 99精品久久免费看蜜臀剧情介绍| 国产欧美一级| 欧美激情导航| 欧美一级片在线播放| 亚洲精品乱码| 久久综合色8888| 亚洲女人天堂成人av在线| 在线看欧美视频| 国产日韩欧美一区二区三区在线观看 | 狠狠综合久久av一区二区老牛| 欧美激情成人在线| 久久色在线播放| 午夜欧美大尺度福利影院在线看| 亚洲精品久久| 欧美激情中文不卡| 欧美jizzhd精品欧美喷水|