......
位(bit)
在計算機內部,開關導通時,表示1;斷開表示0。這樣,電壓不穩時計算機還能照樣工作。
一個通斷開關叫做一個“位”。
字節(byte)
計算機內部經常把8個位作為一組,用來表示許多我們平時生活中用到的東西。如:
00000000表示事物為假,11111111表示為真(非0即為真)
00000000表示數字0,00000011表示3
8個位可以表示不同的組合情況,比如音樂音符,顏色,這樣就實現了多媒體。
全世界統一把8個位叫做一個“字節”,我們平時所說的硬盤容量、內存大小、U盤大小,都是以字節為單位。網絡卻經常使用位為單位,所以我們平時的上網速度要除以8(加上衰耗,實際上要除以10),才是下載速度。
二進制與整數
人類平時使用的數字都是逢十進一,叫十進制。在計算機中是逢二進一,叫二進制。
二進制表示成八進制和十六進制更加方便。八進制是逢八進一,用0到7表示。十六進制是逢十六進一,大於9的數字用字母A到F表示。
用八進制和十六進制表示二進制的原因是:3個位剛好是八進制的一位數,4個位剛好是十六進制的一位數。黑客和病毒工作者就經常工作在十六進制數上。
十進制 | 二進制 | 八進制 | 十六進制 |
---|---|---|---|
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 |
17 | 10001 | 21 | 11 |
18 | 10010 | 22 | 12 |
19 | 10011 | 23 | 13 |
注:標黑體字的為關鍵數,關鍵數后面的數字,可從此關鍵數開始推導
※1個八進制位剛好是3個二進制位
※1個十六進制位剛好是4個二進制位。
※1個字節剛好是2個十六進制位
如:11111111剛好是FF
C語言中的八進制和十六進制
程序1
輸入和輸出十、八、十六進制
//12-1,輸出十六進制,八進制 #include <stdio.h> main() { int i8, i10, i16; //八進制,十進制,十六進制 i8 = 015; //八進制的形式賦值 i10 = 15; //十進制的形式賦值 i16 = 0x15; //十六進制的形式賦值 printf("i8的輸出形式%o,十進制為%d,十六進制為%x\n", i8, i8, i8); printf("i10的輸出形式%o,十進制為%d,十六進制為%x\n", i10, i10, i10); printf("i16的輸出形式%o,十進制為%d,十六進制為%x\n", i16, i16, i16); }
從程序中可以看出:
※整數前加個0,表示8進制常量,如:063
※整數前加個0x,表示16進制常量,如:0x3F
注意:C語言中沒有二進制的輸入輸出,用庫函數itoa也只能將十進制轉換成二進制,二進制轉十進制沒有對應的庫函數。
※八進制和十六進制整數沒有負數。
各類型所占內存
類型 | 字節 | 類型 | 字節 |
---|---|---|---|
char | 1 | float | 4 |
short | 2 | double | 8 |
int | 4 | long double | 8 |
long | 4 | 指針 | 4 |
※整型前加unsigned,所占字節數保持不變
※用sizeof可以計算出所有類型所占的字節數。
浮點數據類型因為在后面調出幾位用來做指數部分,計算方法較復雜,本書作為入門叢書,不對此內容深入講解。
進制轉換
書寫格式:
(數字)進制
如:
(111)2 (10)8 (FF)16
※十進制轉二進制:用“除2取余法”
(20)10=(?)2
注意:要除到商為0為止
答案:(20)10=(10100)2
規律:以此類推,十進制轉八進制可用“除8取余法”;轉十六進制可用“除16取余法”
※二進制轉十進制:用降冪法
(10100)2= (?)10
1*24+0*23+1*22+0*21+0*20=20
注意:任何數的0次冪等於1
(10100)2= (20)10
規律:八或十六進制轉十進制只要將底數改為8或16即可
※二進制轉八進制:
將二進制由低位到高位,3個分為1組,每組查表所得的八進制組合,就是最終結果。
(10,100)2= (24)8
※二進制轉十六進制:
將二進制由低位到高位,4個分為1組,每組查表所得的十六進制組合,就是最終結果。
(1,0100)2= (14)16
※八和十六進制互轉:
可以通過二進制作為中間進制,再轉成另一個進制
※進制轉換可以用Windows自帶的計算器設置成科學型后再進行驗算。
單位關系
數學中的單位關系:
太(T)、吉(G)、兆(M)、千(K)、字節(byte)、位(bit)
1T=1000G
1G=1000M
1M=1000K
1K=1000byte
1byte=8bit
計算機中的單位關系:
計算機中的單位關系都是1024,因為210=1024,便於計算機的計算,所以以上的單位關系應改為:
1T=1024G
1G=1024M
1M=1024K
1K=1024byte
1byte=8bit