程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話中進制常識匯總

C說話中進制常識匯總

編輯:關於C++

C說話中進制常識匯總。本站提示廣大學習愛好者:(C說話中進制常識匯總)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話中進制常識匯總正文


1.甚麼是進制

進制是一種計數的方法,經常使用的有二進制、八進制、十進制、十六進制。任何數據在盤算機內存中都是以二進制的情勢寄存的。

我對進制的小我懂得,二進制數是以2為盤算單位,滿2進1位的數;八進制數是以8為盤算單位,滿8進1位的數。

關於任何一個數字,我們都可以用分歧的進制來表現,好比,十進制數12,用二進制表現為1100,用八進制表現為14,用十六進制表現為0xC。

2.進制的轉換規矩

遵守滿進制值進1位,個位數變成0的道理,上面我們以十進制數18為例,對1-18中每個數值轉換各類進制做一個具體解釋

轉二進制:

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

2為二進制值1前面一個數,因為1+1滿2,須要進1位,個位數變成0,所以2的二進制值是10

3為二進制值10前面一個數,因為11的個位數1小於2,無需進1位,所以3的二進制值是11

4為二進制值11前面一個數,因為11的個位數1+1滿2,須要進1位,而二進制值11的位數1+1又滿2,所以位數加1,終究轉換成果為100

轉換思緒:二進制值11+1 ->10+(1+1)(個位等於2,進1位,個位數變成0) ->(1+1)+0(位數滿2,進1位) -> 100

以此類推,終究十進制數18的二進制轉換成果是10010

轉八進制:

1-7小於8,無需進1位,1-7的八進制由1-7表現

8為八進制值7前面一個數,因為7+1滿8,須要進1位,個位數變成0,所以8的八進制值是10

以此類推,終究十進制數18的八進制轉換成果是22

轉十六進制

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

16為十六進制值c前面1個數,因為c+1滿16,須要進1位,個位數變成0,所以16的十六進制是10。

終究十進制數18的十六進制轉換成果是12

具體成果以下圖所示(C說話把數字後面加0x的數以為是十六進制數)

3.C說話中int類型進制的聲明和占位符

固然以下3個變量的賦值方法分歧,但現實賦值成果都是18

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

八進制占位符:%o

十六進制占位符:%x

4.內存存儲數據細節

我們曉得,int類型數據占領4個字節,1個字節是8bit。而且任何數據在盤算機內存中都是以二進制的情勢寄存的,所之內存須要用32個0或1來描寫1個int類型數據。

因為18的二進制數是10010,我們將一個int類型變量賦值18,實質上是將這個變量的內存地址對應的32個bit位修正為:

0000 0000 0000 0000 0000 0000 0001 0010(未滿31位,前面的數字用0填充:為何是31而不是32呢,前面會引見)

假定我們界說兩個變量

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

盤算機遇依據內存地址以由年夜到小的次序停止分派內存空間,詳細以下圖所示:

5.進制的轉換公式

二進制轉十進制

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

十進制轉二進制

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

6.進制的其他常識

1.n位二進制能保留的整數規模公式:2的n次方-1

例如,3位的二進制數最年夜值為111,對應的十進制數字為7;5位的二進制數最年夜值為11111,對應的十進制數字為(2*2*2*2*2)-1 = 31。

2.正數的二進制保留規矩是最右邊的數字是1。例如,0000 0000 0000 0000 0000 0000 0001 0010 表現正整數,1111 1111 1111 1111 1111 1111 1110 1101表現正數

由此,我們就可以推想出,int類型能保留的最年夜整數是2的(32-1)次方-1 =2147483647。為何要用32-1,很簡略,32個bit中,必需抽1個bit位用來描寫這個數字是負數照樣正數。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved