欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中進制知識匯總

 更新時間:2016年05月08日 11:30:08   作者:cocoaVi  
在C語言里,整數(shù)有三種表示形式:十進制,八進制,十六進制。 其中以數(shù)字0開頭,由0~7組成的數(shù)是八進制。以0X或0x開頭,由0~9,A~F或a~f 組成是十六進制。除表示正負的符號外,以1~9開頭,由0~9組成是十進制。

1.什么是進制

進制是一種計數(shù)的方式,常用的有二進制、八進制、十進制、十六進制。任何數(shù)據(jù)在計算機內(nèi)存中都是以二進制的形式存放的。

我對進制的個人理解,二進制數(shù)是以2為計算單元,滿2進1位的數(shù);八進制數(shù)是以8為計算單元,滿8進1位的數(shù)。

對于任何一個數(shù)字,我們都可以用不同的進制來表示,比如,十進制數(shù)12,用二進制表示為1100,用八進制表示為14,用十六進制表示為0xC。

2.進制的轉(zhuǎn)換規(guī)則

遵循滿進制值進1位,個位數(shù)變?yōu)?的原理,下面我們以十進制數(shù)18為例,對1-18中每一個數(shù)值轉(zhuǎn)換各種進制做一個詳細說明

轉(zhuǎn)二進制:

1小于2,無需進1位,1的二進制值是1

2為二進制值1后面一個數(shù),由于1+1滿2,需要進1位,個位數(shù)變?yōu)?,所以2的二進制值是10

3為二進制值10后面一個數(shù),由于11的個位數(shù)1小于2,無需進1位,所以3的二進制值是11

4為二進制值11后面一個數(shù),由于11的個位數(shù)1+1滿2,需要進1位,而二進制值11的位數(shù)1+1又滿2,所以位數(shù)加1,最終轉(zhuǎn)換結(jié)果為100

轉(zhuǎn)換思路:二進制值11+1 ->10+(1+1)(個位等于2,進1位,個位數(shù)變?yōu)?) ->(1+1)+0(位數(shù)滿2,進1位) -> 100

以此類推,最終十進制數(shù)18的二進制轉(zhuǎn)換結(jié)果是10010

轉(zhuǎn)八進制:

1-7小于8,無需進1位,1-7的八進制由1-7表示

8為八進制值7后面一個數(shù),由于7+1滿8,需要進1位,個位數(shù)變?yōu)?,所以8的八進制值是10

以此類推,最終十進制數(shù)18的八進制轉(zhuǎn)換結(jié)果是22

轉(zhuǎn)十六進制

十六進制中,個位數(shù)1-15分別為1 2 3 4 5 6 7 8 9 a b c d e f (a=10....f=15)

16為十六進制值c后面1個數(shù),由于c+1滿16,需要進1位,個位數(shù)變?yōu)?,所以16的十六進制是10。

最終十進制數(shù)18的十六進制轉(zhuǎn)換結(jié)果是12

詳細結(jié)果如下圖所示(C語言把數(shù)字前面加0x的數(shù)認為是十六進制數(shù))

3.C語言中int類型進制的聲明以及占位符

雖然以下3個變量的賦值方式不同,但實際賦值結(jié)果都是18

復(fù)制代碼 代碼如下:
//二進制類型數(shù)字加0b int number1 = 0b10010; //八進制類型數(shù)字加0 int number2 = 022; //十六進制類型數(shù)字加0x int number3 = 0x12;

八進制占位符:%o

十六進制占位符:%x

4.內(nèi)存存儲數(shù)據(jù)細節(jié)

我們知道,int類型數(shù)據(jù)占據(jù)4個字節(jié),1個字節(jié)是8bit。并且任何數(shù)據(jù)在計算機內(nèi)存中都是以二進制的形式存放的,所以內(nèi)存需要用32個0或1來描述1個int類型數(shù)據(jù)。

由于18的二進制數(shù)是10010,我們將一個int類型變量賦值18,本質(zhì)上是將這個變量的內(nèi)存地址對應(yīng)的32個bit位修改為:

0000 0000 0000 0000 0000 0000 0001 0010(未滿31位,后面的數(shù)字用0填充:為什么是31而不是32呢,后面會介紹)

假設(shè)我們定義兩個變量

//二進制類型數(shù)字加0b
  int number1 = 0b10010;
  //八進制類型數(shù)字加0
  int number2 = 022;
  //十六進制類型數(shù)字加0x
  int number3 = 0x12;

計算機會根據(jù)內(nèi)存地址以由大到小的順序進行分配內(nèi)存空間,具體如下圖所示:

5.進制的轉(zhuǎn)換公式

二進制轉(zhuǎn)十進制

0b1100 ->0*2的0次方 + 0*2的1次方 + 1*2的2次方 + 1*2的3次方 = 12

十進制轉(zhuǎn)二進制

67 ->64+2+1 ->2的6次方+ 2的1次方 + 2的0次方 = 0b1000011

6.進制的其他知識

1.n位二進制能保存的整數(shù)范圍公式:2的n次方-1

例如,3位的二進制數(shù)最大值為111,對應(yīng)的十進制數(shù)字為7;5位的二進制數(shù)最大值為11111,對應(yīng)的十進制數(shù)字為(2*2*2*2*2)-1 = 31。

2.負數(shù)的二進制保存規(guī)則是最左邊的數(shù)字是1。例如,0000 0000 0000 0000 0000 0000 0001 0010 表示正整數(shù),1111 1111 1111 1111 1111 1111 1110 1101表示負數(shù)

由此,我們就能推測出,int類型能保存的最大整數(shù)是2的(32-1)次方-1 =2147483647。為什么要用32-1,很簡單,32個bit中,必須抽1個bit位用來描述這個數(shù)字是正數(shù)還是負數(shù)。

相關(guān)文章

  • C++11系列學習之可調(diào)用對象包裝器和綁定器

    C++11系列學習之可調(diào)用對象包裝器和綁定器

    這篇文章主要介紹了C++11系列學習之可調(diào)用對象包裝器和綁定器,下文基于C++的相關(guān)資料展開詳細內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • C++類與對象的詳細說明2

    C++類與對象的詳細說明2

    這篇文章主要為大家詳細介紹了C++的類與對象,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 擴展KMP算法(Extend KMP)

    擴展KMP算法(Extend KMP)

    我們這里說的KMP不是拿來放電影的(雖然我很喜歡這個軟件),而是一種算法。KMP算法是拿來處理字符串匹配的。今天我們談到的是對KMP算法的拓展
    2014-08-08
  • C語言實現(xiàn)簡易版掃雷的完整過程

    C語言實現(xiàn)簡易版掃雷的完整過程

    這篇文章主要給大家介紹了關(guān)于利用C語言如何實現(xiàn)簡易版掃雷的完整過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C++ LeetCode1796字符串中第二大數(shù)字

    C++ LeetCode1796字符串中第二大數(shù)字

    這篇文章主要為大家介紹了C++ LeetCode1796字符串中第二大數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • C++11中強類型枚舉的使用

    C++11中強類型枚舉的使用

    本文主要介紹了C++11中強類型枚舉的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • C語言數(shù)據(jù)結(jié)構(gòu)之迷宮求解問題

    C語言數(shù)據(jù)結(jié)構(gòu)之迷宮求解問題

    這篇文章主要為大家詳細介紹了C語言數(shù)據(jù)結(jié)構(gòu)之迷宮求解問題,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C語言簡明介紹常見關(guān)鍵字的用法

    C語言簡明介紹常見關(guān)鍵字的用法

    關(guān)鍵字是C語言非常重要的一部分,熟練的掌握和使用關(guān)鍵字有助于我們更加熟悉了解C語言,同時C語言的關(guān)鍵字也是面試筆試中??嫉膬?nèi)容。C語言的關(guān)鍵字共有32個,但并不是每個關(guān)鍵字都有坑,本篇文章將通過理論聯(lián)系實際的方式為大家講解C語言中易混易錯以及??嫉囊恍╆P(guān)鍵字
    2022-06-06
  • C語言版五子棋游戲的實現(xiàn)代碼

    C語言版五子棋游戲的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C語言版五子棋游戲的實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 淺談在函數(shù)中返回動態(tài)的內(nèi)存

    淺談在函數(shù)中返回動態(tài)的內(nèi)存

    下面小編就為大家?guī)硪黄獪\談在函數(shù)中返回動態(tài)的內(nèi)存。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12

最新評論