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

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 御坂美琴 閱讀(1483) 評論(1)  編輯 收藏 引用

評論

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

炮姐好……  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美激情四色| 亚洲图片欧洲图片av| 亚洲精品国产精品国产自| 美女视频黄免费的久久| 欧美一区二区啪啪| 国产亚洲精品bt天堂精选| 国产精品国产a级| 美女爽到呻吟久久久久| 中文精品视频| 999亚洲国产精| 亚洲午夜精品17c| 久久狠狠久久综合桃花| 亚洲国产精品高清久久久| 亚洲在线播放| 欧美在线三区| 欧美精品国产一区| 夜夜夜精品看看| 一区二区三区|亚洲午夜| 国产精品免费在线| 免费成人av资源网| 欧美日韩免费在线视频| 亚洲欧美视频在线| 免费亚洲电影在线观看| 久久激情视频| 国产精品高清在线| 欧美二区在线观看| 国产婷婷色一区二区三区四区| 欧美国产在线电影| 国产亚洲欧美在线| 日韩亚洲一区二区| 红桃视频一区| 欧美在线精品一区| 亚洲一区二区在线视频| 牛牛国产精品| 欧美成人首页| 91久久在线播放| 久久精品首页| 午夜欧美理论片| 欧美日韩成人综合在线一区二区| 亚洲一区二区精品| 欧美日韩精品二区| 美女诱惑一区| 欧美性猛交xxxx乱大交蜜桃| 久久久亚洲综合| 欧美大片免费久久精品三p | 亚洲欧美清纯在线制服| 久久av二区| 欧美一区日韩一区| 欧美日韩午夜在线视频| 欧美福利专区| 亚洲国产精品va在线观看黑人| 亚洲天天影视| 亚洲欧美在线x视频| 欧美日本不卡| 亚洲精品人人| 亚洲素人在线| 欧美亚洲成人免费| 亚洲一区二区三区精品动漫| 亚洲一区在线观看免费观看电影高清| 欧美69视频| 99精品免费视频| 亚洲欧美色婷婷| 国产综合av| 麻豆成人在线播放| 国产精品三区www17con| 亚洲精品社区| 久久久久久久久综合| 国产一区二区三区四区hd| 欧美在线三区| 亚洲茄子视频| 一区二区三区免费在线观看| 国产精品视频内| 欧美激情精品久久久久久久变态| 99亚洲视频| 国产一区二区久久精品| 欧美激情第六页| 午夜免费在线观看精品视频| 亚洲狠狠丁香婷婷综合久久久| 亚洲免费视频在线观看| 欧美一区二区在线看| 99国产一区二区三精品乱码| 国产午夜久久| 欧美天堂亚洲电影院在线播放| 亚洲免费网站| 亚洲一区二区三区中文字幕| 亚洲日本aⅴ片在线观看香蕉| 亚洲一区二区三区777| 国产精品你懂的在线欣赏| 欧美顶级大胆免费视频| 久久久精品国产一区二区三区| 国产精品99久久久久久久女警| 极品少妇一区二区三区精品视频| 欧美亚一区二区| 欧美日韩精品在线观看| 欧美裸体一区二区三区| 久热re这里精品视频在线6| 午夜精品免费视频| 亚洲免费一区二区| 亚洲欧美国产制服动漫| 亚洲欧美另类国产| 亚洲欧美日韩视频二区| 9人人澡人人爽人人精品| 亚洲天堂成人在线观看| 一本一本久久a久久精品综合麻豆| 亚洲精品国偷自产在线99热| 亚洲理论电影网| 亚洲激情社区| 欧美亚洲综合在线| 久久国产精品99国产精| 欧美成人中文字幕| 欧美少妇一区二区| 国产一区免费视频| 亚洲区免费影片| 亚洲欧美久久久| 蜜乳av另类精品一区二区| 最新日韩在线| 在线亚洲精品| 女仆av观看一区| 欧美天堂亚洲电影院在线播放| 夜夜嗨av色一区二区不卡| 亚洲一区在线直播| 久久影院亚洲| 欧美色精品天天在线观看视频| 欧美电影电视剧在线观看| 国产美女精品免费电影| 日韩亚洲欧美一区| 另类春色校园亚洲| 久久久久久91香蕉国产| 亚洲午夜精品视频| 欧美日韩国产专区| 99国内精品久久久久久久软件| 久久久久久电影| 亚洲国产欧美日韩精品| 在线亚洲免费| 国产精品久线观看视频| 亚洲精品无人区| 亚洲激情电影中文字幕| 亚洲永久免费精品| 国产日韩亚洲欧美| 久久天堂精品| 久久精品av麻豆的观看方式| 国产一区二区日韩精品欧美精品 | 99成人免费视频| 亚洲乱码精品一二三四区日韩在线 | 亚洲欧美日韩视频二区| 国产日韩欧美精品综合| 欧美一区二区三区男人的天堂| 亚洲黄色视屏| 国产女主播一区二区| 久久久精品五月天| 麻豆国产va免费精品高清在线| 影音先锋一区| 日韩午夜在线| 国产小视频国产精品| 欧美aaaaaaaa牛牛影院| 欧美xx69| 亚洲在线视频一区| 久久夜精品va视频免费观看| 一本色道久久综合亚洲精品按摩| 日韩视频在线免费| 国产一区激情| 一区二区三区日韩在线观看| 伊人成综合网伊人222| 亚洲人成免费| 黄色成人av| 中文一区在线| 欧美理论视频| 老鸭窝毛片一区二区三区| 久久尤物视频| 欧美不卡视频一区发布| 国产色产综合产在线视频| 欧美电影免费| 尤物九九久久国产精品的特点 | 蜜臀av国产精品久久久久| 亚洲欧美激情四射在线日| 欧美日韩国产不卡| 亚洲视频导航| 久久人人97超碰国产公开结果| 国产日韩精品一区二区三区 | 久久久久久亚洲精品不卡4k岛国| 国产丝袜一区二区| 久久精品夜色噜噜亚洲a∨| 你懂的成人av| 性8sex亚洲区入口| 国产在线拍揄自揄视频不卡99 | 一区二区亚洲| 欧美片第一页| 久久久91精品国产一区二区三区 | 一区二区三区国产在线观看| 欧美在线首页| 亚洲久久一区二区| 一本一本久久a久久精品牛牛影视| 午夜精品成人在线视频| 韩日精品视频一区| 欧美日韩精品系列| 久久一区二区三区国产精品| 一区二区三区久久精品| 欧美国产三级| 久久在线播放| 久久国产手机看片|