<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                本文目錄 - [一、十進制](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#label0) - [二、二進制](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#label1) - [三、八進制](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#label2) - [四、十六進制](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#label3) - [五、進制總結](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#label4) - [六、變量與進制](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#label5) - [七、printf的簡單使用](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#label6) 上一講簡單介紹了[常量和變量](http://www.cnblogs.com/mjios/archive/2013/05/07/3065522.html),這講補充一點計算機的基礎知識---進制。 我們先來看看平時是如何表示一個整數的,最常見的肯定是用阿拉伯數字表示,比如“十二”,我們可以用12來表示,其實這種表示方式是基于一種叫做“十進制”的計數方式。“進制”是一種計數方式,編程中常見的進制有4種:十進制、二進制、八進制、十六進制。也就是說,同一個整數,我們至少有4種表示方式。 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#labelTop) ###一、十進制 ### 1.概念 十進制是我們最熟悉、最常用的一種計數方式,它有兩個特點:由0、1、2….9十個基本數字組成;運算規則是“逢十進一”。 ### 2.運算 所謂“逢十進一”,似乎在小學數學中都已經學過了,也就是當數值滿十時,就要向前進一位 ![](https://box.kancloud.cn/2016-05-07_572d604a8d1aa.png) 個位數為9+1,滿十了,十位數就進一。 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#labelTop) ##二、二進制 ### 1.概念 二進制是計算機內部使用的一種計數方式,它有兩個特點:由0、1兩個基本數字組成;運算規則是“逢二進一”。 ### 2.細節 1,有人可能會問:為什么二進制里面沒有2~9這些數字呢?都說了,逢二進一,因此當數字滿二的時候就會進位。 2,如果我寫個1010,你能看出它是二進制還是十進制么?為了跟其他進制區分開來,書寫二進制數的時候,需要以0b或者0B開頭。比如0b1010是個二進制數,而1010則還是我們熟悉的十進制數,就是“一千零一十” ### 3.運算 做個簡單的運算吧,比如1+1 ![](https://box.kancloud.cn/2016-05-07_572d604a9f81f.png) 個位數是1+1,值滿二了,于是十位數要進一。因此,在二進制中:1 + 1 =?0b10,這里的0b10表示的是十進制中的“二”,并不是“十”。 以此類推,11 + 1 =?0b100 ![](https://box.kancloud.cn/2016-05-07_572d604ab1607.png) ### 4.二進制轉為十進制 1,用二進制表示數值,雖然簡單、方便,但是不容易閱讀,比如隨便給出個二進制數0b110111101010,你能立刻看出它表示的是什么數值嗎?一般需要將二進制數轉為十進制數后才能知道代表的什么數值。 進制里面有個“基數”的概念,基數是用來計算數值的,比如十進制的基數是10,因此十進制是這樣算數的: 1230 = 0 * 100?+ 3 * 101?+ 2 * 102?+ 1 * 103?= 0 * 1 + 3 * 10 + 2 * 100 + 1 * 1000 二進制的基數是2,以此類推: 0b1011 = 1 * 20?+ 1 * 21?+ 0 * 22?+ 1 * 23?= 1 * 1 + 1 * 2 + 0 * 4 + 1 * 8 = 1 + 2 + 0 + 8 = 11 因此二進制數0b1011表示的數值是十進制中的11 2,一位二進制數能表示的最大值是1,而n位二進制數所能表示的最大值是0b111...1111,也就是說n位二進制數都是1,那么它的十進制數值為: 1 * 20?+ 1 * 21?+ 1 * 22?+ 1 * 23?+ .... + 1 * 2n-1?= 2n?- 1 因此,n位二進制數所能表示的最大值是2n?- 1。也就是說,4位二進制數能表示的最大值是0b1111,十進制數值為:24?- 1 = 15;5位二進制數能表示的最大值是25?- 1 = 31。 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#labelTop) ##三、八進制 ### 1.概念 八進制有兩個特點:由0~7八個基本數字組成;運算規則是“逢八進一”。 ### 2.細節 由于十進制和八進制中都包含了0~7,為了區分開來,在書寫八進制數的時候,需要在前面加個0。比如076是個八進制數,76則是個十進制數。 ### 3.運算 ![](https://box.kancloud.cn/2016-05-07_572d604ac4177.png) 個位數是7+1,值滿八了,于是十位數要進一。因此,在八進制中,7 + 1 =?010。010則表示十進制中的“八”,而不是“十” ### 4.八進制轉十進制 八進制的基數是8,因此027計算出來就是十進制中的23 027 = 7 * 80?+ 2 * 81?= 7 * 1 + 2 * 8 = 23 ### 5.二進制轉八進制 不難發現一個十進制數可以表示的最大值是9,而一個八進制數可以表示的最大值是7,恰好3個二進制數可以表示的最大值0b111也是7。因此,我們可以用一個八進制數來代替3個二進制數。 0b11110011 =?0b?011? 110? 011? =?0363 如果是八進制轉為二進制,那就反過來,用3位二進制數來表示1位八進制數 025 =?0b?010? 101?=?0b10101 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#labelTop) ##四、十六進制 ### 1.概念 十六進制有兩個特點:由0~9和A~F組成,A~F分別表示10~15;運算規則是“逢十六進一”。 ### 2.細節 由于十進制、八進制、十六進制中都包含了0~7,為了區分開來,在書寫十六進制數的時候,需要在前面加個0x或者0X。比如0x76是個十六進制數,076是個八進制數,76則是個十進制數。 ### 3.運算 ![](https://box.kancloud.cn/2016-05-07_572d604ad5e69.png) 個位數是B+5,也就是11+5,值滿十六了,于是十位數要進一。因此,在十六進制中,B + 5 =?0x10。0x10則表示十進制中的“十六”,而不是“十” ### 4.十六進制轉十進制 十六進制的基數是16,F表示十進制中的15,因此0x2F計算出來就是十進制中的47 0x2F = 15 * 160?+ 2 * 161?= 15 * 1 + 2 * 16 = 47 ### 5.二進制轉十六進制 一個十六進制數可以表示的最大值是15,恰好4個二進制數可以表示的最大值0b1111也是15。因此,我們可以用一個十六進制數來代替4個二進制數。 0b11110011 =?0b?1111? 0011? =?0xF3 如果是十六進制轉為二進制,那就反過來,用4位二進制數來表示1位十六進制數 0x25 =?0b?0010? 0101=0b100101 [回到頂部](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#labelTop) ##五、進制總結 1.一個整數“十二”的4種表示方式分別如下: 十進制:12 二進制:0b1100 八進制:014 十六進制:0xC 2.其實也可以利用Mac中的計算器軟件來測試進制之間的轉換。 ![](https://box.kancloud.cn/2016-05-07_572d604ae7fe1.png) 設置計算機的顯示模式為“編程器” ![](https://box.kancloud.cn/2016-05-07_572d765ee3ad7.png) 先選擇10進制,然后輸入12,底部顯示的二進制數為1100,這里省略最前面的0b ![](https://box.kancloud.cn/2016-05-07_572d765f528b0.png) 選擇八進制,顯示為14,這里省略了最前面的0 ![](https://box.kancloud.cn/2016-05-07_572d765f73f80.png) 選擇十六進制,顯示為0xC ![](https://box.kancloud.cn/2016-05-07_572d765f9029c.png) [回到頂部](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#labelTop) ##六、變量與進制 1.上一講學習了[變量](http://www.cnblogs.com/mjios/archive/2013/05/07/3065522.html)的使用,簡單回顧一下 ~~~ int main() { int a = 10; return 0; } ~~~ 在第3行定義了一個變量a,存儲的是十進制整數10。其實,這個變量a在內存中是以二進制數的形式存儲的,10的二進制形式是1010。 ![](https://box.kancloud.cn/2016-05-07_572d765faeb31.png) 2.除了十進制整數,還可以將其他進制的整數賦值給整型變量 ~~~ int main() { int a = 0b110; // 十進制數:6 int b = 021; // 十進制數:17 int c = 12; // 十進制數:12 int d = 0x1D; // 十進制數:29 return 0; } ~~~ 上面的代碼中,分別將4種不同進制的數值賦值給不同的整型變量。對應的十進制數值已經寫在右邊的注釋中。它們最終都是以二進制的形式存儲在內存中。 ![](https://box.kancloud.cn/2016-05-07_572d765fc3b40.png) [回到頂部](http://www.cnblogs.com/mjios/archive/2013/05/24/3067219.html#labelTop) ##七、printf的簡單使用 ### 1.用printf輸出整型變量 前面給變量賦值了各種進制的整數,究竟這些整數的十進制形式為多少呢?我們自己可以換算出來,不過總是自己去算,太麻煩了,我們可是程序員,應該利用程序幫我們算出來。前面已經學過printf("Hello World");語句的作用是在屏幕輸出Hello World這一串內容。我們其實也可以利用printf將一個變量輸出到屏幕,看看這個變量的值究竟為多少。 這個printf看起來好像是你往它的小括號里面放什么內容,它就會在屏幕上輸出什么內容,但是printf的用法有講究的,像下面的寫法就是錯誤的: ~~~ #include <stdio.h> int main() { int a = 0x1D; printf(a); return 0; } ~~~ 有人可能會疑惑,為什么有時需要#include <stdio.h>,有時又不需要#include <stdio.h>?這個暫時不去詳細討論,你先記住只要用了printf,就要添加#include <stdio.h>。 在第5行定義了變量a,初值為一個十六進制數。在第7行想通過printf輸出變量a的數值,但是第7行的寫法是錯誤的。 要想利用printf輸出一個整型變量,就必須先說明輸出的格式,比如是以十進制格式輸出還是以八進制格式輸出? 下面的寫法才是正確的: ~~~ #include <stdio.h> int main() { int a = 0x1D; printf("變量a的值為%d", a); return 0; } ~~~ 注意看第7行,左邊雙引號括住的內容代表著要輸出到屏幕的內容,不過并不是直接將 "變量a的值為%d"?輸出到屏幕。%d是一種格式符,它的意思是用右邊變量a的值替代%d的位置進行輸出,并且以十進制格式輸出。說白了,格式符是用來控制輸出格式的。 程序在終端上的運行結果是: ![](https://box.kancloud.cn/2016-05-07_572d765fde3ec.png) 可以發現,輸出了"變量a的值為29",0x1D的十進制數值確實是29,說明這個輸出是正確的。但是這個29跟后面的英文連在一起了,非常難看,這時候我們可以在%d的后面加一個\n表示回車換行。 ~~~ #include <stdio.h> int main() { int a = 0x1D; printf("變量a的值為%d\n", a); return 0; } ~~~ 注意第5行的改變:在%d的后面加了個\n,表示將變量a以十進制格式輸出后進行回車換行。 這時候的運行結果是: ![](https://box.kancloud.cn/2016-05-07_572d765ff3399.png) 這樣就可以明顯地看到這個29了 ### 2.printf支持的格式符 除開%d,printf還支持很多格式符,如下表所示(紅色表示常用),這份表格的內容不用去死記,用到時再回來查資料即可 ![](https://box.kancloud.cn/2016-05-07_572d766012eb2.png) 接下來簡單演示一下%x的使用,它的功能是以十六進制形式輸出整數 ~~~ #include <stdio.h> int main() { int a = 17; printf("%x\n", a); return 0; } ~~~ 在第5行定義了變量a,存儲的是十進制整數17,在第7行讓變量a以十六進制形式輸出,運行結果是: ![](https://box.kancloud.cn/2016-05-07_572d766037e5d.png) 可以發現,十進制整數17以十六進制形式輸出就是11,這是正確的。 ### 3.printf可以同時輸出多個數值 看下面代碼,利用printf同時輸出多個數值 ~~~ #include <stdio.h> int main() { int age = 17; int no = 10; printf("age = %d, no = %d\n", age, no); return 0; } ~~~ 注意看第9行,左邊的雙引號內有2個%d,age的值會代替第一個%d進行輸出,no的值會代替第二個%d進行輸出,并且都是以十進制形式輸出。輸出結果: ![](https://box.kancloud.cn/2016-05-07_572d76604a08b.png) ### 4.printf也可以輸出常量 ~~~ #include <stdio.h> int main() { printf("輸出的常量為%d\n", 11); return 0; } ~~~ 注意第6行,右邊的是一個整型常量11,它會代替%d的位置進行輸出。輸出結果: ![](https://box.kancloud.cn/2016-05-07_572d76606057d.png) 用了半天,似乎還是沒有說到printf究竟是個什么東西,這個會放到后面詳細討論,它還有其他復雜用法。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看