進制也是進制位,是人們規(guī)定的一種進位方法,。對于任何一種進制—X進制,表示某一位置上的數(shù)運算時,就是逢X進一位,十進制就是逢十進一,十六進制就是逢十六進一,二進制就是逢二進一。
為噶爾等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及噶爾網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站制作、網(wǎng)站建設、噶爾網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!十進制 | 二進制 | 八進制 | 十六進制 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
1.6.1 二進制
二進制是計算技術中廣泛采用的一種數(shù)制。二進制數(shù)據(jù)是用0和1兩個數(shù)碼表示的數(shù)。它的基數(shù)為2,進位規(guī)則是逢二進一,借位規(guī)則是借一當二。
當前的計算機系統(tǒng)使用的基本上是二進制系統(tǒng),數(shù)據(jù)在計算機中主要是以補碼的形式存儲的。
術語 | 含義 |
---|---|
bit(比特) | 一個二進制代表一位,一個位只能表示0或1兩種狀態(tài)。數(shù)據(jù)傳輸是習慣以“位”(bit)為單位。 |
Byte(字節(jié)) | 一個字節(jié)為8個二進制,稱為8位,計算機中存儲的最小單位是字節(jié)。數(shù)據(jù)存儲是習慣以“字節(jié)”(Byte)為單位。 |
WORD(雙字節(jié)) | 2個字節(jié),16位 |
DWORD | 兩個WORD,4個字節(jié),32位 |
1b | 1bit,1位 |
1B | 1Byte,1字節(jié),8位 |
1k,1K | 1024 |
1M(1兆) | 1024k, 1024*1024 |
1G | 1024M |
1T | 1024G |
1Kb(千位) | 1024bit,1024位 |
1KB(千字節(jié)) | 1024Byte,1024字節(jié) |
1Mb(兆位) | 1024Kb = 1024 * 1024bit |
1MB(兆字節(jié)) | 1024KB = 1024 * 1024Byte |
十進制轉化二進制的方法:用十進制數(shù)除以2,分別取余數(shù)和商數(shù),商數(shù)為0的時候,將余數(shù)倒著數(shù)就是轉化后的結果。
28/2=14........0
14/2=7.........0
7/2=3...........1
3/2=1............1
1/2=0............1
28化為二進制為:11100
十進制的小數(shù)轉換成二進制:小數(shù)部分和2相乘,取整數(shù),不足1取0,每次相乘都是小數(shù)部分,順序看取整后的數(shù)就是轉化后的結果。
0.43*2=0.86...........0
0.86*2=1.72..........1
0.72*2=1.44..........1
0.44*2=0.88..........0
0.88*2=1.76..........1
0.43的二進制數(shù)為:0.11
1.6.2 八進制
八進制,Octal,縮寫OCT或O,一種以8為基數(shù)的計數(shù)法,采用0,1,2,3,4,5,6,7八個數(shù)字,逢八進1。一些編程語言中常常以數(shù)字0開始表明該數(shù)字是八進制。
八進制的數(shù)和二進制數(shù)可以按位對應(八進制一位對應二進制三位),因此常應用在計算機語言中。
二進制轉八進制
101 101 101 100
5? ? ? 5? ? ?5? ? ?4
八進制轉二進制
7? ? ?4? ? ? 6? ? 2
111 100 110 010
十進制轉化八進制的方法:
用十進制數(shù)除以8,分別取余數(shù)和商數(shù),商數(shù)為0的時候,將余數(shù)倒著數(shù)就是轉化后的結果。
1.6.3 十六進制
十六進制(英文名稱:Hexadecimal),同我們日常生活中的表示法不一樣,它由0-9,A-F組成,字母不區(qū)分大小寫。與10進制的對應關系是:0-9對應0-9,A-F對應10-15。
十六進制的數(shù)和二進制數(shù)可以按位對應(十六進制一位對應二進制四位),因此常應用在計算機語言中。
二進制轉十六進制:
0110 1011 1111
?6? ? ???b? ? ? ? f
十六進制轉換為二進制:
a? ? ? ? ?c? ? ?1? ? ? ?5
1010 1100 0001 0101
十進制轉化十六進制的方法:
用十進制數(shù)除以16,分別取余數(shù)和商數(shù),商數(shù)為0的時候,將余數(shù)倒著數(shù)就是轉化后的結果。
1.6.4 C 語言如何表示相應的進制數(shù)
十進制 | 以正常數(shù)字1-9開頭,如123 |
---|---|
八進制 | 以數(shù)字0開頭,如0123 |
十六進制 | 以0x開頭,如0x123 |
二進制 | C語言不能直接書寫二進制數(shù) |
int a = 123; //十進制方式賦值
int b = 0123; //八進制方式賦值, 以數(shù)字0開頭
int c = 0xABC; //十六進制方式賦值
//如果在printf中輸出一個十進制數(shù)那么用%d,八進制用%o,十六進制是%x
printf("十進制:%d\n",a );
printf("八進制:%o\n", b); //%o,為字母o,不是數(shù)字
printf("十六進制:%x\n", c);
1.7 計算機內存數(shù)值存儲方式1.7.1 原碼、反碼、補碼
1)原碼
原碼有如下特點:
最高位表示符號位,0表示正, 1表示負
其他數(shù)值部分就是數(shù)值本身絕對值的二進制數(shù)
負數(shù)的原碼是在其絕對值的基礎上,最高位變?yōu)?;
例如:以一個字節(jié)的大小描述
十進制數(shù) 15 原碼 0000 1111
十進制數(shù) -15 原碼 1000 1111
原碼表示法簡單易懂,與帶符號數(shù)本身轉換方便,只要符號還原即可,但當兩個正數(shù)相減或不同符號數(shù)相加時,必須比較兩個數(shù)哪個絕對值大,才能決定誰減誰,才能確定結果是正還是負,所以原碼不便于加減運算。
2)反碼
對于正數(shù):反碼與原碼一致
對于負數(shù):符號位不變,其余位值變?yōu)橄喾磾?shù)
例:以一個字節(jié)的大小描述
十進制數(shù) 15 原碼 0000 1111 反碼 0000 1111
十進制數(shù) -15 原碼 1000 1111 反碼 1111 0000
3)補碼
在計算機系統(tǒng)中,數(shù)值存儲均是以補碼形式存儲。計算機中是不存在減法的
補碼特點:
對于正數(shù): 原碼、反碼、補碼相同
對于負數(shù):其補碼在反碼的基礎上+1
對于負數(shù):補碼符號位不動,其余位求反,最后加1,得到原碼
或補碼-1,符號位不動,其余位取反,得到原碼
例:以一個字節(jié)的大小描述
十進制數(shù) 15 原碼 0000 1111 反碼 0000 1111 補碼 0000 1111
十進制數(shù) -15 原碼 1000 1111 反碼 1111 0000 補碼 1111 0001
以二進制方式計算如下式子(以一個字節(jié)大小計算):
9-6:
9 補碼:0000 1001
-6 補碼:1111 1010
9+(-6) 補碼:10000 0011 一個字節(jié)為8位,最高位1在第九位溢出,舍去 得到
0000 0011換為原碼:0000 0011 換為十進制表示 3
在計算機系統(tǒng)中,數(shù)值一律用補碼來存儲,主要原因是:
統(tǒng)一了零的編碼
將符號位和其它位統(tǒng)一處理
將減法運算轉變?yōu)榧臃ㄟ\算
兩個用補碼表示的數(shù)相加時,如果最高位(符號位)有進位,則進位被舍棄
1.7.2 數(shù)值溢出
當超過一個數(shù)據(jù)類型能夠存放大的范圍時,數(shù)值會溢出
有符號位最高位溢出的區(qū)別:符號位溢出會導致數(shù)的正負發(fā)生改變,但最高位的溢出會導致最高位丟失。
例如 以char類型為例
char a=127;
char b=1;
printf("%d\n",a+b);//-128
a=127 補碼為:0111 1111
b=1 補碼為:0000 0001
a+b 補碼為:1000 0000 原碼:符號位不變,按位取反,最后末尾+1 得 1111 1111 +1 即為 -128
由此可是,一個數(shù)據(jù)類型的大值加1,反而會因為溢出,得到此數(shù)據(jù)類型的 最小值
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁標題:C語言技術體系自學筆記(四)-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.rwnh.cn/article30/coieso.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、網(wǎng)站收錄、網(wǎng)站改版、全網(wǎng)營銷推廣、電子商務、域名注冊
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容